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 SetReusePort2ResponseFut: std::future::Future<
864            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Result, fidl::Error>,
865        > + Send;
866    fn r#set_reuse_port2(
867        &self,
868        value: fidl_fuchsia_posix_socket::ReusePortOption,
869    ) -> Self::SetReusePort2ResponseFut;
870    type SetReusePortResponseFut: std::future::Future<
871            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error>,
872        > + Send;
873    fn r#set_reuse_port(&self, value: bool) -> Self::SetReusePortResponseFut;
874    type GetReusePortResponseFut: std::future::Future<
875            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
876        > + Send;
877    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
878    type GetAcceptConnResponseFut: std::future::Future<
879            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
880        > + Send;
881    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
882    type SetBindToDeviceResponseFut: std::future::Future<
883            Output = Result<
884                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
885                fidl::Error,
886            >,
887        > + Send;
888    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
889    type GetBindToDeviceResponseFut: std::future::Future<
890            Output = Result<
891                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
892                fidl::Error,
893            >,
894        > + Send;
895    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
896    type SetBindToInterfaceIndexResponseFut: std::future::Future<
897            Output = Result<
898                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
899                fidl::Error,
900            >,
901        > + Send;
902    fn r#set_bind_to_interface_index(&self, value: u64)
903    -> Self::SetBindToInterfaceIndexResponseFut;
904    type GetBindToInterfaceIndexResponseFut: std::future::Future<
905            Output = Result<
906                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
907                fidl::Error,
908            >,
909        > + Send;
910    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
911    type SetTimestampResponseFut: std::future::Future<
912            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
913        > + Send;
914    fn r#set_timestamp(
915        &self,
916        value: fidl_fuchsia_posix_socket::TimestampOption,
917    ) -> Self::SetTimestampResponseFut;
918    type GetTimestampResponseFut: std::future::Future<
919            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
920        > + Send;
921    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
922    type SetMarkResponseFut: std::future::Future<
923            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
924        > + Send;
925    fn r#set_mark(
926        &self,
927        domain: fidl_fuchsia_net::MarkDomain,
928        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
929    ) -> Self::SetMarkResponseFut;
930    type GetMarkResponseFut: std::future::Future<
931            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
932        > + Send;
933    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
934    type GetCookieResponseFut: std::future::Future<
935            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error>,
936        > + Send;
937    fn r#get_cookie(&self) -> Self::GetCookieResponseFut;
938    type BindResponseFut: std::future::Future<
939            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
940        > + Send;
941    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
942    type ConnectResponseFut: std::future::Future<
943            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
944        > + Send;
945    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
946    type DisconnectResponseFut: std::future::Future<
947            Output = Result<
948                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
949                fidl::Error,
950            >,
951        > + Send;
952    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
953    type GetSockNameResponseFut: std::future::Future<
954            Output = Result<
955                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
956                fidl::Error,
957            >,
958        > + Send;
959    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
960    type GetPeerNameResponseFut: std::future::Future<
961            Output = Result<
962                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
963                fidl::Error,
964            >,
965        > + Send;
966    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
967    type ShutdownResponseFut: std::future::Future<
968            Output = Result<
969                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
970                fidl::Error,
971            >,
972        > + Send;
973    fn r#shutdown(
974        &self,
975        mode: fidl_fuchsia_posix_socket::ShutdownMode,
976    ) -> Self::ShutdownResponseFut;
977    type SetIpTypeOfServiceResponseFut: std::future::Future<
978            Output = Result<
979                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
980                fidl::Error,
981            >,
982        > + Send;
983    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
984    type GetIpTypeOfServiceResponseFut: std::future::Future<
985            Output = Result<
986                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
987                fidl::Error,
988            >,
989        > + Send;
990    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
991    type SetIpTtlResponseFut: std::future::Future<
992            Output = Result<
993                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
994                fidl::Error,
995            >,
996        > + Send;
997    fn r#set_ip_ttl(
998        &self,
999        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1000    ) -> Self::SetIpTtlResponseFut;
1001    type GetIpTtlResponseFut: std::future::Future<
1002            Output = Result<
1003                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
1004                fidl::Error,
1005            >,
1006        > + Send;
1007    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1008    type SetIpPacketInfoResponseFut: std::future::Future<
1009            Output = Result<
1010                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1011                fidl::Error,
1012            >,
1013        > + Send;
1014    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1015    type GetIpPacketInfoResponseFut: std::future::Future<
1016            Output = Result<
1017                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1018                fidl::Error,
1019            >,
1020        > + Send;
1021    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1022    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1023            Output = Result<
1024                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1025                fidl::Error,
1026            >,
1027        > + Send;
1028    fn r#set_ip_receive_type_of_service(
1029        &self,
1030        value: bool,
1031    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1032    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1033            Output = Result<
1034                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1035                fidl::Error,
1036            >,
1037        > + Send;
1038    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1039    type SetIpReceiveTtlResponseFut: std::future::Future<
1040            Output = Result<
1041                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1042                fidl::Error,
1043            >,
1044        > + Send;
1045    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1046    type GetIpReceiveTtlResponseFut: std::future::Future<
1047            Output = Result<
1048                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1049                fidl::Error,
1050            >,
1051        > + Send;
1052    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1053    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1054            Output = Result<
1055                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1056                fidl::Error,
1057            >,
1058        > + Send;
1059    fn r#set_ip_multicast_interface(
1060        &self,
1061        iface: u64,
1062        address: &fidl_fuchsia_net::Ipv4Address,
1063    ) -> Self::SetIpMulticastInterfaceResponseFut;
1064    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1065            Output = Result<
1066                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1067                fidl::Error,
1068            >,
1069        > + Send;
1070    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1071    type SetIpMulticastTtlResponseFut: std::future::Future<
1072            Output = Result<
1073                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1074                fidl::Error,
1075            >,
1076        > + Send;
1077    fn r#set_ip_multicast_ttl(
1078        &self,
1079        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1080    ) -> Self::SetIpMulticastTtlResponseFut;
1081    type GetIpMulticastTtlResponseFut: std::future::Future<
1082            Output = Result<
1083                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1084                fidl::Error,
1085            >,
1086        > + Send;
1087    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1088    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1089            Output = Result<
1090                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1091                fidl::Error,
1092            >,
1093        > + Send;
1094    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1095    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1096            Output = Result<
1097                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1098                fidl::Error,
1099            >,
1100        > + Send;
1101    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1102    type AddIpMembershipResponseFut: std::future::Future<
1103            Output = Result<
1104                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1105                fidl::Error,
1106            >,
1107        > + Send;
1108    fn r#add_ip_membership(
1109        &self,
1110        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1111    ) -> Self::AddIpMembershipResponseFut;
1112    type DropIpMembershipResponseFut: std::future::Future<
1113            Output = Result<
1114                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1115                fidl::Error,
1116            >,
1117        > + Send;
1118    fn r#drop_ip_membership(
1119        &self,
1120        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1121    ) -> Self::DropIpMembershipResponseFut;
1122    type SetIpTransparentResponseFut: std::future::Future<
1123            Output = Result<
1124                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1125                fidl::Error,
1126            >,
1127        > + Send;
1128    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1129    type GetIpTransparentResponseFut: std::future::Future<
1130            Output = Result<
1131                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1132                fidl::Error,
1133            >,
1134        > + Send;
1135    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1136    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1137    fn r#set_ip_receive_original_destination_address(
1138        &self,
1139        value: bool,
1140    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1141    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1142    fn r#get_ip_receive_original_destination_address(
1143        &self,
1144    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1145    type AddIpv6MembershipResponseFut: std::future::Future<
1146            Output = Result<
1147                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1148                fidl::Error,
1149            >,
1150        > + Send;
1151    fn r#add_ipv6_membership(
1152        &self,
1153        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1154    ) -> Self::AddIpv6MembershipResponseFut;
1155    type DropIpv6MembershipResponseFut: std::future::Future<
1156            Output = Result<
1157                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1158                fidl::Error,
1159            >,
1160        > + Send;
1161    fn r#drop_ipv6_membership(
1162        &self,
1163        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1164    ) -> Self::DropIpv6MembershipResponseFut;
1165    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1166            Output = Result<
1167                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1168                fidl::Error,
1169            >,
1170        > + Send;
1171    fn r#set_ipv6_multicast_interface(
1172        &self,
1173        value: u64,
1174    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1175    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1176            Output = Result<
1177                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1178                fidl::Error,
1179            >,
1180        > + Send;
1181    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1182    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1183            Output = Result<
1184                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1185                fidl::Error,
1186            >,
1187        > + Send;
1188    fn r#set_ipv6_unicast_hops(
1189        &self,
1190        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1191    ) -> Self::SetIpv6UnicastHopsResponseFut;
1192    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1193            Output = Result<
1194                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1195                fidl::Error,
1196            >,
1197        > + Send;
1198    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1199    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1200            Output = Result<
1201                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1202                fidl::Error,
1203            >,
1204        > + Send;
1205    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1206    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1207            Output = Result<
1208                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1209                fidl::Error,
1210            >,
1211        > + Send;
1212    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1213    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1214            Output = Result<
1215                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1216                fidl::Error,
1217            >,
1218        > + Send;
1219    fn r#set_ipv6_multicast_hops(
1220        &self,
1221        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1222    ) -> Self::SetIpv6MulticastHopsResponseFut;
1223    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1224            Output = Result<
1225                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1226                fidl::Error,
1227            >,
1228        > + Send;
1229    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1230    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1231            Output = Result<
1232                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1233                fidl::Error,
1234            >,
1235        > + Send;
1236    fn r#set_ipv6_multicast_loopback(
1237        &self,
1238        value: bool,
1239    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1240    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1241            Output = Result<
1242                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1243                fidl::Error,
1244            >,
1245        > + Send;
1246    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1247    type SetIpv6OnlyResponseFut: std::future::Future<
1248            Output = Result<
1249                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1250                fidl::Error,
1251            >,
1252        > + Send;
1253    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1254    type GetIpv6OnlyResponseFut: std::future::Future<
1255            Output = Result<
1256                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1257                fidl::Error,
1258            >,
1259        > + Send;
1260    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1261    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1262            Output = Result<
1263                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1264                fidl::Error,
1265            >,
1266        > + Send;
1267    fn r#set_ipv6_receive_traffic_class(
1268        &self,
1269        value: bool,
1270    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1271    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1272            Output = Result<
1273                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1274                fidl::Error,
1275            >,
1276        > + Send;
1277    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1278    type SetIpv6TrafficClassResponseFut: std::future::Future<
1279            Output = Result<
1280                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1281                fidl::Error,
1282            >,
1283        > + Send;
1284    fn r#set_ipv6_traffic_class(
1285        &self,
1286        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1287    ) -> Self::SetIpv6TrafficClassResponseFut;
1288    type GetIpv6TrafficClassResponseFut: std::future::Future<
1289            Output = Result<
1290                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1291                fidl::Error,
1292            >,
1293        > + Send;
1294    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1295    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1296            Output = Result<
1297                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1298                fidl::Error,
1299            >,
1300        > + Send;
1301    fn r#set_ipv6_receive_packet_info(
1302        &self,
1303        value: bool,
1304    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1305    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1306            Output = Result<
1307                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1308                fidl::Error,
1309            >,
1310        > + Send;
1311    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1312    type GetOriginalDestinationResponseFut: std::future::Future<
1313            Output = Result<
1314                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1315                fidl::Error,
1316            >,
1317        > + Send;
1318    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1319    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1320        + Send;
1321    fn r#describe(&self) -> Self::DescribeResponseFut;
1322    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1323        + Send;
1324    fn r#recv_msg(
1325        &self,
1326        want_addr: bool,
1327        data_len: u32,
1328        want_control: bool,
1329        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1330    ) -> Self::RecvMsgResponseFut;
1331    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1332        + Send;
1333    fn r#send_msg(
1334        &self,
1335        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1336        data: &[u8],
1337        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1338        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1339    ) -> Self::SendMsgResponseFut;
1340    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1341        + Send;
1342    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1343    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1344        + Send;
1345    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1346    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1347        + Send;
1348    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1349    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1350        + Send;
1351    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1352    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1353        + Send;
1354    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1355    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1356        + Send;
1357    fn r#set_ipv6_checksum(
1358        &self,
1359        config: &Ipv6ChecksumConfiguration,
1360    ) -> Self::SetIpv6ChecksumResponseFut;
1361    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1362        + Send;
1363    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1364}
1365#[derive(Debug)]
1366#[cfg(target_os = "fuchsia")]
1367pub struct SocketSynchronousProxy {
1368    client: fidl::client::sync::Client,
1369}
1370
1371#[cfg(target_os = "fuchsia")]
1372impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1373    type Proxy = SocketProxy;
1374    type Protocol = SocketMarker;
1375
1376    fn from_channel(inner: fidl::Channel) -> Self {
1377        Self::new(inner)
1378    }
1379
1380    fn into_channel(self) -> fidl::Channel {
1381        self.client.into_channel()
1382    }
1383
1384    fn as_channel(&self) -> &fidl::Channel {
1385        self.client.as_channel()
1386    }
1387}
1388
1389#[cfg(target_os = "fuchsia")]
1390impl SocketSynchronousProxy {
1391    pub fn new(channel: fidl::Channel) -> Self {
1392        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1393        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1394    }
1395
1396    pub fn into_channel(self) -> fidl::Channel {
1397        self.client.into_channel()
1398    }
1399
1400    /// Waits until an event arrives and returns it. It is safe for other
1401    /// threads to make concurrent requests while waiting for an event.
1402    pub fn wait_for_event(
1403        &self,
1404        deadline: zx::MonotonicInstant,
1405    ) -> Result<SocketEvent, fidl::Error> {
1406        SocketEvent::decode(self.client.wait_for_event(deadline)?)
1407    }
1408
1409    pub fn r#clone(
1410        &self,
1411        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1412    ) -> Result<(), fidl::Error> {
1413        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1414            (request,),
1415            0x20d8a7aba2168a79,
1416            fidl::encoding::DynamicFlags::empty(),
1417        )
1418    }
1419
1420    /// Terminates the connection.
1421    ///
1422    /// After calling `Close`, the client must not send any other requests.
1423    ///
1424    /// Servers, after sending the status response, should close the connection
1425    /// regardless of status and without sending an epitaph.
1426    ///
1427    /// Closing the client end of the channel should be semantically equivalent
1428    /// to calling `Close` without knowing when the close has completed or its
1429    /// status.
1430    pub fn r#close(
1431        &self,
1432        ___deadline: zx::MonotonicInstant,
1433    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1434        let _response = self.client.send_query::<
1435            fidl::encoding::EmptyPayload,
1436            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1437        >(
1438            (),
1439            0x5ac5d459ad7f657e,
1440            fidl::encoding::DynamicFlags::empty(),
1441            ___deadline,
1442        )?;
1443        Ok(_response.map(|x| x))
1444    }
1445
1446    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1447        let _response = self.client.send_query::<
1448            fidl::encoding::EmptyPayload,
1449            fidl_fuchsia_unknown::QueryableQueryResponse,
1450        >(
1451            (),
1452            0x2658edee9decfc06,
1453            fidl::encoding::DynamicFlags::empty(),
1454            ___deadline,
1455        )?;
1456        Ok(_response.protocol)
1457    }
1458
1459    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1460    pub fn r#set_reuse_address(
1461        &self,
1462        mut value: bool,
1463        ___deadline: zx::MonotonicInstant,
1464    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1465        let _response = self.client.send_query::<
1466            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1467            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1468        >(
1469            (value,),
1470            0x1fd74ee8b9a4a876,
1471            fidl::encoding::DynamicFlags::empty(),
1472            ___deadline,
1473        )?;
1474        Ok(_response.map(|x| x))
1475    }
1476
1477    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1478    pub fn r#get_reuse_address(
1479        &self,
1480        ___deadline: zx::MonotonicInstant,
1481    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1482        let _response = self
1483            .client
1484            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1485                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1486                fidl_fuchsia_posix::Errno,
1487            >>(
1488                (), 0x67b7206b8d1bc0a5, fidl::encoding::DynamicFlags::empty(), ___deadline
1489            )?;
1490        Ok(_response.map(|x| x.value))
1491    }
1492
1493    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1494    /// Returns the last error if there is an error set on the socket.
1495    pub fn r#get_error(
1496        &self,
1497        ___deadline: zx::MonotonicInstant,
1498    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1499        let _response =
1500            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1501                fidl::encoding::EmptyStruct,
1502                fidl_fuchsia_posix::Errno,
1503            >>(
1504                (),
1505                0x5aad39b33e5f6ebb,
1506                fidl::encoding::DynamicFlags::empty(),
1507                ___deadline,
1508            )?;
1509        Ok(_response.map(|x| x))
1510    }
1511
1512    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1513    pub fn r#set_broadcast(
1514        &self,
1515        mut value: bool,
1516        ___deadline: zx::MonotonicInstant,
1517    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1518        let _response = self.client.send_query::<
1519            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1520            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1521        >(
1522            (value,),
1523            0x6023e081ce3cd947,
1524            fidl::encoding::DynamicFlags::empty(),
1525            ___deadline,
1526        )?;
1527        Ok(_response.map(|x| x))
1528    }
1529
1530    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1531    pub fn r#get_broadcast(
1532        &self,
1533        ___deadline: zx::MonotonicInstant,
1534    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1535        let _response = self
1536            .client
1537            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1538                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1539                fidl_fuchsia_posix::Errno,
1540            >>(
1541                (), 0x68796fc556f9780d, fidl::encoding::DynamicFlags::empty(), ___deadline
1542            )?;
1543        Ok(_response.map(|x| x.value))
1544    }
1545
1546    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1547    pub fn r#set_send_buffer(
1548        &self,
1549        mut value_bytes: u64,
1550        ___deadline: zx::MonotonicInstant,
1551    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1552        let _response = self.client.send_query::<
1553            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1554            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1555        >(
1556            (value_bytes,),
1557            0x756eac32d73a7a70,
1558            fidl::encoding::DynamicFlags::empty(),
1559            ___deadline,
1560        )?;
1561        Ok(_response.map(|x| x))
1562    }
1563
1564    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1565    pub fn r#get_send_buffer(
1566        &self,
1567        ___deadline: zx::MonotonicInstant,
1568    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1569        let _response = self
1570            .client
1571            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1572                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1573                fidl_fuchsia_posix::Errno,
1574            >>(
1575                (), 0x78a52fd9c7b2410b, fidl::encoding::DynamicFlags::empty(), ___deadline
1576            )?;
1577        Ok(_response.map(|x| x.value_bytes))
1578    }
1579
1580    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1581    pub fn r#set_receive_buffer(
1582        &self,
1583        mut value_bytes: u64,
1584        ___deadline: zx::MonotonicInstant,
1585    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1586        let _response = self.client.send_query::<
1587            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1588            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1589        >(
1590            (value_bytes,),
1591            0x6b0cf2f1919c7001,
1592            fidl::encoding::DynamicFlags::empty(),
1593            ___deadline,
1594        )?;
1595        Ok(_response.map(|x| x))
1596    }
1597
1598    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1599    pub fn r#get_receive_buffer(
1600        &self,
1601        ___deadline: zx::MonotonicInstant,
1602    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1603        let _response = self
1604            .client
1605            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1606                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1607                fidl_fuchsia_posix::Errno,
1608            >>(
1609                (), 0x14c1a4b64f709e5c, fidl::encoding::DynamicFlags::empty(), ___deadline
1610            )?;
1611        Ok(_response.map(|x| x.value_bytes))
1612    }
1613
1614    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1615    pub fn r#set_keep_alive(
1616        &self,
1617        mut value: bool,
1618        ___deadline: zx::MonotonicInstant,
1619    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1620        let _response = self.client.send_query::<
1621            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1622            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1623        >(
1624            (value,),
1625            0x572df8f0b920d2c7,
1626            fidl::encoding::DynamicFlags::empty(),
1627            ___deadline,
1628        )?;
1629        Ok(_response.map(|x| x))
1630    }
1631
1632    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1633    pub fn r#get_keep_alive(
1634        &self,
1635        ___deadline: zx::MonotonicInstant,
1636    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1637        let _response = self
1638            .client
1639            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1640                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1641                fidl_fuchsia_posix::Errno,
1642            >>(
1643                (), 0x2dd29d3215f2c9d2, fidl::encoding::DynamicFlags::empty(), ___deadline
1644            )?;
1645        Ok(_response.map(|x| x.value))
1646    }
1647
1648    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1649    pub fn r#set_out_of_band_inline(
1650        &self,
1651        mut value: bool,
1652        ___deadline: zx::MonotonicInstant,
1653    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1654        let _response = self.client.send_query::<
1655            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1656            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1657        >(
1658            (value,),
1659            0x3ecb49968bee439,
1660            fidl::encoding::DynamicFlags::empty(),
1661            ___deadline,
1662        )?;
1663        Ok(_response.map(|x| x))
1664    }
1665
1666    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1667    pub fn r#get_out_of_band_inline(
1668        &self,
1669        ___deadline: zx::MonotonicInstant,
1670    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1671        let _response = self
1672            .client
1673            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1674                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1675                fidl_fuchsia_posix::Errno,
1676            >>(
1677                (), 0x348c1ab3aeca1745, fidl::encoding::DynamicFlags::empty(), ___deadline
1678            )?;
1679        Ok(_response.map(|x| x.value))
1680    }
1681
1682    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1683    pub fn r#set_no_check(
1684        &self,
1685        mut value: bool,
1686        ___deadline: zx::MonotonicInstant,
1687    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1688        let _response = self.client.send_query::<
1689            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1690            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1691        >(
1692            (value,),
1693            0x6bbf00c53a4c78c2,
1694            fidl::encoding::DynamicFlags::empty(),
1695            ___deadline,
1696        )?;
1697        Ok(_response.map(|x| x))
1698    }
1699
1700    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1701    pub fn r#get_no_check(
1702        &self,
1703        ___deadline: zx::MonotonicInstant,
1704    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1705        let _response = self
1706            .client
1707            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1708                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1709                fidl_fuchsia_posix::Errno,
1710            >>(
1711                (), 0x2cd4249286417694, fidl::encoding::DynamicFlags::empty(), ___deadline
1712            )?;
1713        Ok(_response.map(|x| x.value))
1714    }
1715
1716    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1717    pub fn r#set_linger(
1718        &self,
1719        mut linger: bool,
1720        mut length_secs: u32,
1721        ___deadline: zx::MonotonicInstant,
1722    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1723        let _response = self.client.send_query::<
1724            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1725            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1726        >(
1727            (linger, length_secs,),
1728            0x45386351246e998e,
1729            fidl::encoding::DynamicFlags::empty(),
1730            ___deadline,
1731        )?;
1732        Ok(_response.map(|x| x))
1733    }
1734
1735    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1736    pub fn r#get_linger(
1737        &self,
1738        ___deadline: zx::MonotonicInstant,
1739    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1740        let _response = self
1741            .client
1742            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1743                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1744                fidl_fuchsia_posix::Errno,
1745            >>(
1746                (), 0x48eb20fc5ccb0e45, fidl::encoding::DynamicFlags::empty(), ___deadline
1747            )?;
1748        Ok(_response.map(|x| (x.linger, x.length_secs)))
1749    }
1750
1751    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1752    pub fn r#set_reuse_port2(
1753        &self,
1754        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
1755        ___deadline: zx::MonotonicInstant,
1756    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Result, fidl::Error> {
1757        let _response = self.client.send_query::<
1758            fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Request,
1759            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1760        >(
1761            (&mut value,),
1762            0x547dc9cc0455189e,
1763            fidl::encoding::DynamicFlags::empty(),
1764            ___deadline,
1765        )?;
1766        Ok(_response.map(|x| x))
1767    }
1768
1769    /// Old version of `SetReusePort`. Will be deprecated and removed in the
1770    /// future.
1771    pub fn r#set_reuse_port(
1772        &self,
1773        mut value: bool,
1774        ___deadline: zx::MonotonicInstant,
1775    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1776        let _response = self.client.send_query::<
1777            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1778            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1779        >(
1780            (value,),
1781            0x24dd3e5cb36d9ccb,
1782            fidl::encoding::DynamicFlags::empty(),
1783            ___deadline,
1784        )?;
1785        Ok(_response.map(|x| x))
1786    }
1787
1788    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1789    pub fn r#get_reuse_port(
1790        &self,
1791        ___deadline: zx::MonotonicInstant,
1792    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1793        let _response = self
1794            .client
1795            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1796                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1797                fidl_fuchsia_posix::Errno,
1798            >>(
1799                (), 0x7a112c1ab54ff828, fidl::encoding::DynamicFlags::empty(), ___deadline
1800            )?;
1801        Ok(_response.map(|x| x.value))
1802    }
1803
1804    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1805    pub fn r#get_accept_conn(
1806        &self,
1807        ___deadline: zx::MonotonicInstant,
1808    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1809        let _response = self
1810            .client
1811            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1812                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1813                fidl_fuchsia_posix::Errno,
1814            >>(
1815                (), 0x67ce6db6c2ec8966, fidl::encoding::DynamicFlags::empty(), ___deadline
1816            )?;
1817        Ok(_response.map(|x| x.value))
1818    }
1819
1820    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1821    pub fn r#set_bind_to_device(
1822        &self,
1823        mut value: &str,
1824        ___deadline: zx::MonotonicInstant,
1825    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1826        let _response = self.client.send_query::<
1827            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1828            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1829        >(
1830            (value,),
1831            0x2118b483f28aafc4,
1832            fidl::encoding::DynamicFlags::empty(),
1833            ___deadline,
1834        )?;
1835        Ok(_response.map(|x| x))
1836    }
1837
1838    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1839    pub fn r#get_bind_to_device(
1840        &self,
1841        ___deadline: zx::MonotonicInstant,
1842    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1843        let _response = self
1844            .client
1845            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1846                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1847                fidl_fuchsia_posix::Errno,
1848            >>(
1849                (), 0x1ab1fbf0ef7906c8, fidl::encoding::DynamicFlags::empty(), ___deadline
1850            )?;
1851        Ok(_response.map(|x| x.value))
1852    }
1853
1854    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1855    /// If `value` is 0, this clears the bound interface.
1856    pub fn r#set_bind_to_interface_index(
1857        &self,
1858        mut value: u64,
1859        ___deadline: zx::MonotonicInstant,
1860    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1861    {
1862        let _response = self.client.send_query::<
1863            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1864            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1865        >(
1866            (value,),
1867            0x6e387a0def00821,
1868            fidl::encoding::DynamicFlags::empty(),
1869            ___deadline,
1870        )?;
1871        Ok(_response.map(|x| x))
1872    }
1873
1874    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1875    pub fn r#get_bind_to_interface_index(
1876        &self,
1877        ___deadline: zx::MonotonicInstant,
1878    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
1879    {
1880        let _response = self
1881            .client
1882            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1883                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
1884                fidl_fuchsia_posix::Errno,
1885            >>(
1886                (), 0x59c31dd3e3078295, fidl::encoding::DynamicFlags::empty(), ___deadline
1887            )?;
1888        Ok(_response.map(|x| x.value))
1889    }
1890
1891    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1892    pub fn r#set_timestamp(
1893        &self,
1894        mut value: fidl_fuchsia_posix_socket::TimestampOption,
1895        ___deadline: zx::MonotonicInstant,
1896    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
1897        let _response = self.client.send_query::<
1898            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
1899            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1900        >(
1901            (value,),
1902            0x285d6516c263d839,
1903            fidl::encoding::DynamicFlags::empty(),
1904            ___deadline,
1905        )?;
1906        Ok(_response.map(|x| x))
1907    }
1908
1909    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1910    pub fn r#get_timestamp(
1911        &self,
1912        ___deadline: zx::MonotonicInstant,
1913    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
1914        let _response = self
1915            .client
1916            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1917                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
1918                fidl_fuchsia_posix::Errno,
1919            >>(
1920                (), 0x49f2fffbbcc2bd27, fidl::encoding::DynamicFlags::empty(), ___deadline
1921            )?;
1922        Ok(_response.map(|x| x.value))
1923    }
1924
1925    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1926    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1927    /// mark can be set independently in each domain.
1928    pub fn r#set_mark(
1929        &self,
1930        mut domain: fidl_fuchsia_net::MarkDomain,
1931        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1932        ___deadline: zx::MonotonicInstant,
1933    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
1934        let _response = self.client.send_query::<
1935            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
1936            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1937        >(
1938            (domain, mark,),
1939            0x6ead6de09f653236,
1940            fidl::encoding::DynamicFlags::empty(),
1941            ___deadline,
1942        )?;
1943        Ok(_response.map(|x| x))
1944    }
1945
1946    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1947    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1948    /// mark can be retrieved independently in each domain.
1949    pub fn r#get_mark(
1950        &self,
1951        mut domain: fidl_fuchsia_net::MarkDomain,
1952        ___deadline: zx::MonotonicInstant,
1953    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
1954        let _response = self.client.send_query::<
1955            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
1956            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
1957        >(
1958            (domain,),
1959            0x57a2752c61d93d47,
1960            fidl::encoding::DynamicFlags::empty(),
1961            ___deadline,
1962        )?;
1963        Ok(_response.map(|x| x.mark))
1964    }
1965
1966    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
1967    pub fn r#get_cookie(
1968        &self,
1969        ___deadline: zx::MonotonicInstant,
1970    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
1971        let _response = self
1972            .client
1973            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1974                fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
1975                fidl_fuchsia_posix::Errno,
1976            >>(
1977                (), 0x2c2f47fd8f924e52, fidl::encoding::DynamicFlags::empty(), ___deadline
1978            )?;
1979        Ok(_response.map(|x| x.value))
1980    }
1981
1982    /// Sets the local address used for the socket.
1983    pub fn r#bind(
1984        &self,
1985        mut addr: &fidl_fuchsia_net::SocketAddress,
1986        ___deadline: zx::MonotonicInstant,
1987    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
1988        let _response = self.client.send_query::<
1989            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
1990            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1991        >(
1992            (addr,),
1993            0x4bc6400ae92125d,
1994            fidl::encoding::DynamicFlags::empty(),
1995            ___deadline,
1996        )?;
1997        Ok(_response.map(|x| x))
1998    }
1999
2000    /// Initiates a connection to a remote address.
2001    pub fn r#connect(
2002        &self,
2003        mut addr: &fidl_fuchsia_net::SocketAddress,
2004        ___deadline: zx::MonotonicInstant,
2005    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
2006        let _response = self.client.send_query::<
2007            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
2008            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2009        >(
2010            (addr,),
2011            0x5f05f19bfdd38871,
2012            fidl::encoding::DynamicFlags::empty(),
2013            ___deadline,
2014        )?;
2015        Ok(_response.map(|x| x))
2016    }
2017
2018    /// Clears connection information from this socket.
2019    pub fn r#disconnect(
2020        &self,
2021        ___deadline: zx::MonotonicInstant,
2022    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
2023        let _response =
2024            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2025                fidl::encoding::EmptyStruct,
2026                fidl_fuchsia_posix::Errno,
2027            >>(
2028                (),
2029                0x74e63b91f7b29b2,
2030                fidl::encoding::DynamicFlags::empty(),
2031                ___deadline,
2032            )?;
2033        Ok(_response.map(|x| x))
2034    }
2035
2036    /// Retrieves the local socket address.
2037    pub fn r#get_sock_name(
2038        &self,
2039        ___deadline: zx::MonotonicInstant,
2040    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2041        let _response = self
2042            .client
2043            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2044                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2045                fidl_fuchsia_posix::Errno,
2046            >>(
2047                (), 0x475f23f84a1a4f85, fidl::encoding::DynamicFlags::empty(), ___deadline
2048            )?;
2049        Ok(_response.map(|x| x.addr))
2050    }
2051
2052    /// Retrieves the remote socket address.
2053    pub fn r#get_peer_name(
2054        &self,
2055        ___deadline: zx::MonotonicInstant,
2056    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2057        let _response = self
2058            .client
2059            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2060                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2061                fidl_fuchsia_posix::Errno,
2062            >>(
2063                (), 0x1ffecf4bd5b6432e, fidl::encoding::DynamicFlags::empty(), ___deadline
2064            )?;
2065        Ok(_response.map(|x| x.addr))
2066    }
2067
2068    /// Shuts down part of the socket.
2069    pub fn r#shutdown(
2070        &self,
2071        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2072        ___deadline: zx::MonotonicInstant,
2073    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2074        let _response = self.client.send_query::<
2075            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2076            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2077        >(
2078            (mode,),
2079            0x247f38b6db68c336,
2080            fidl::encoding::DynamicFlags::empty(),
2081            ___deadline,
2082        )?;
2083        Ok(_response.map(|x| x))
2084    }
2085
2086    /// Set `SOL_IP` -> `IP_TOS`.
2087    pub fn r#set_ip_type_of_service(
2088        &self,
2089        mut value: u8,
2090        ___deadline: zx::MonotonicInstant,
2091    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2092    {
2093        let _response = self.client.send_query::<
2094            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2095            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2096        >(
2097            (value,),
2098            0x995c600475b6d46,
2099            fidl::encoding::DynamicFlags::empty(),
2100            ___deadline,
2101        )?;
2102        Ok(_response.map(|x| x))
2103    }
2104
2105    /// Get `SOL_IP` -> `IP_TOS`.
2106    pub fn r#get_ip_type_of_service(
2107        &self,
2108        ___deadline: zx::MonotonicInstant,
2109    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2110    {
2111        let _response = self
2112            .client
2113            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2114                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2115                fidl_fuchsia_posix::Errno,
2116            >>(
2117                (), 0x3814a04259f75fcb, fidl::encoding::DynamicFlags::empty(), ___deadline
2118            )?;
2119        Ok(_response.map(|x| x.value))
2120    }
2121
2122    /// Set `SOL_IP` -> `IP_TTL`.
2123    pub fn r#set_ip_ttl(
2124        &self,
2125        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2126        ___deadline: zx::MonotonicInstant,
2127    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2128        let _response = self.client.send_query::<
2129            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2130            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2131        >(
2132            (value,),
2133            0x29e2424b433ae1ef,
2134            fidl::encoding::DynamicFlags::empty(),
2135            ___deadline,
2136        )?;
2137        Ok(_response.map(|x| x))
2138    }
2139
2140    /// Get `SOL_IP` -> `IP_TTL`.
2141    pub fn r#get_ip_ttl(
2142        &self,
2143        ___deadline: zx::MonotonicInstant,
2144    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2145        let _response = self
2146            .client
2147            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2148                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2149                fidl_fuchsia_posix::Errno,
2150            >>(
2151                (), 0x47e47fa1f24da471, fidl::encoding::DynamicFlags::empty(), ___deadline
2152            )?;
2153        Ok(_response.map(|x| x.value))
2154    }
2155
2156    /// Set `SOL_IP` -> `IP_PKTINFO`.
2157    pub fn r#set_ip_packet_info(
2158        &self,
2159        mut value: bool,
2160        ___deadline: zx::MonotonicInstant,
2161    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2162    {
2163        let _response = self.client.send_query::<
2164            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2165            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2166        >(
2167            (value,),
2168            0x392d16bee20c0e16,
2169            fidl::encoding::DynamicFlags::empty(),
2170            ___deadline,
2171        )?;
2172        Ok(_response.map(|x| x))
2173    }
2174
2175    /// Get `SOL_IP` -> `IP_PKTINFO`.
2176    pub fn r#get_ip_packet_info(
2177        &self,
2178        ___deadline: zx::MonotonicInstant,
2179    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2180    {
2181        let _response = self
2182            .client
2183            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2184                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2185                fidl_fuchsia_posix::Errno,
2186            >>(
2187                (), 0x54b505f242280740, fidl::encoding::DynamicFlags::empty(), ___deadline
2188            )?;
2189        Ok(_response.map(|x| x.value))
2190    }
2191
2192    /// Set `SOL_IP` -> `IP_RECVTOS`.
2193    pub fn r#set_ip_receive_type_of_service(
2194        &self,
2195        mut value: bool,
2196        ___deadline: zx::MonotonicInstant,
2197    ) -> Result<
2198        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2199        fidl::Error,
2200    > {
2201        let _response = self.client.send_query::<
2202            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2203            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2204        >(
2205            (value,),
2206            0x6c4f6714995f84ef,
2207            fidl::encoding::DynamicFlags::empty(),
2208            ___deadline,
2209        )?;
2210        Ok(_response.map(|x| x))
2211    }
2212
2213    /// Get `SOL_IP` -> `IP_RECVTOS`.
2214    pub fn r#get_ip_receive_type_of_service(
2215        &self,
2216        ___deadline: zx::MonotonicInstant,
2217    ) -> Result<
2218        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2219        fidl::Error,
2220    > {
2221        let _response = self
2222            .client
2223            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2224                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2225                fidl_fuchsia_posix::Errno,
2226            >>(
2227                (), 0x4158ba7dc2795960, fidl::encoding::DynamicFlags::empty(), ___deadline
2228            )?;
2229        Ok(_response.map(|x| x.value))
2230    }
2231
2232    /// Set `SOL_IP` -> `IP_RECVTTL`.
2233    pub fn r#set_ip_receive_ttl(
2234        &self,
2235        mut value: bool,
2236        ___deadline: zx::MonotonicInstant,
2237    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2238    {
2239        let _response = self.client.send_query::<
2240            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2241            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2242        >(
2243            (value,),
2244            0x46f15be0ce0ab82b,
2245            fidl::encoding::DynamicFlags::empty(),
2246            ___deadline,
2247        )?;
2248        Ok(_response.map(|x| x))
2249    }
2250
2251    /// Get `SOL_IP` -> `IP_RECVTTL`.
2252    pub fn r#get_ip_receive_ttl(
2253        &self,
2254        ___deadline: zx::MonotonicInstant,
2255    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2256    {
2257        let _response = self
2258            .client
2259            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2260                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2261                fidl_fuchsia_posix::Errno,
2262            >>(
2263                (), 0x678ddd5a5dfa2eb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2264            )?;
2265        Ok(_response.map(|x| x.value))
2266    }
2267
2268    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2269    pub fn r#set_ip_multicast_interface(
2270        &self,
2271        mut iface: u64,
2272        mut address: &fidl_fuchsia_net::Ipv4Address,
2273        ___deadline: zx::MonotonicInstant,
2274    ) -> Result<
2275        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2276        fidl::Error,
2277    > {
2278        let _response = self.client.send_query::<
2279            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2280            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2281        >(
2282            (iface, address,),
2283            0x752fbfa9b12befe,
2284            fidl::encoding::DynamicFlags::empty(),
2285            ___deadline,
2286        )?;
2287        Ok(_response.map(|x| x))
2288    }
2289
2290    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2291    pub fn r#get_ip_multicast_interface(
2292        &self,
2293        ___deadline: zx::MonotonicInstant,
2294    ) -> Result<
2295        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2296        fidl::Error,
2297    > {
2298        let _response = self
2299            .client
2300            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2301                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2302                fidl_fuchsia_posix::Errno,
2303            >>(
2304                (), 0x320bd14c4df046c4, fidl::encoding::DynamicFlags::empty(), ___deadline
2305            )?;
2306        Ok(_response.map(|x| x.value))
2307    }
2308
2309    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2310    pub fn r#set_ip_multicast_ttl(
2311        &self,
2312        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2313        ___deadline: zx::MonotonicInstant,
2314    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2315    {
2316        let _response = self.client.send_query::<
2317            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2318            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2319        >(
2320            (value,),
2321            0x63134d53772916a1,
2322            fidl::encoding::DynamicFlags::empty(),
2323            ___deadline,
2324        )?;
2325        Ok(_response.map(|x| x))
2326    }
2327
2328    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2329    pub fn r#get_ip_multicast_ttl(
2330        &self,
2331        ___deadline: zx::MonotonicInstant,
2332    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2333    {
2334        let _response = self
2335            .client
2336            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2337                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2338                fidl_fuchsia_posix::Errno,
2339            >>(
2340                (), 0x4665cd378f39e1a, fidl::encoding::DynamicFlags::empty(), ___deadline
2341            )?;
2342        Ok(_response.map(|x| x.value))
2343    }
2344
2345    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2346    pub fn r#set_ip_multicast_loopback(
2347        &self,
2348        mut value: bool,
2349        ___deadline: zx::MonotonicInstant,
2350    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2351    {
2352        let _response = self.client.send_query::<
2353            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2354            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2355        >(
2356            (value,),
2357            0x20c55c11f00943ea,
2358            fidl::encoding::DynamicFlags::empty(),
2359            ___deadline,
2360        )?;
2361        Ok(_response.map(|x| x))
2362    }
2363
2364    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2365    pub fn r#get_ip_multicast_loopback(
2366        &self,
2367        ___deadline: zx::MonotonicInstant,
2368    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2369    {
2370        let _response = self
2371            .client
2372            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2373                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2374                fidl_fuchsia_posix::Errno,
2375            >>(
2376                (), 0x3b6b26ff558298f2, fidl::encoding::DynamicFlags::empty(), ___deadline
2377            )?;
2378        Ok(_response.map(|x| x.value))
2379    }
2380
2381    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2382    pub fn r#add_ip_membership(
2383        &self,
2384        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2385        ___deadline: zx::MonotonicInstant,
2386    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2387    {
2388        let _response = self.client.send_query::<
2389            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2390            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2391        >(
2392            (membership,),
2393            0x76bc7df115a3b4d0,
2394            fidl::encoding::DynamicFlags::empty(),
2395            ___deadline,
2396        )?;
2397        Ok(_response.map(|x| x))
2398    }
2399
2400    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2401    pub fn r#drop_ip_membership(
2402        &self,
2403        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2404        ___deadline: zx::MonotonicInstant,
2405    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2406    {
2407        let _response = self.client.send_query::<
2408            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2409            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2410        >(
2411            (membership,),
2412            0x2888f3099188d03,
2413            fidl::encoding::DynamicFlags::empty(),
2414            ___deadline,
2415        )?;
2416        Ok(_response.map(|x| x))
2417    }
2418
2419    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2420    pub fn r#set_ip_transparent(
2421        &self,
2422        mut value: bool,
2423        ___deadline: zx::MonotonicInstant,
2424    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2425    {
2426        let _response = self.client.send_query::<
2427            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2428            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2429        >(
2430            (value,),
2431            0x1ae532b0c066e3a0,
2432            fidl::encoding::DynamicFlags::empty(),
2433            ___deadline,
2434        )?;
2435        Ok(_response.map(|x| x))
2436    }
2437
2438    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2439    pub fn r#get_ip_transparent(
2440        &self,
2441        ___deadline: zx::MonotonicInstant,
2442    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2443    {
2444        let _response = self
2445            .client
2446            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2447                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2448                fidl_fuchsia_posix::Errno,
2449            >>(
2450                (), 0x51d43695962ebfb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2451            )?;
2452        Ok(_response.map(|x| x.value))
2453    }
2454
2455    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2456    pub fn r#set_ip_receive_original_destination_address(
2457        &self,
2458        mut value: bool,
2459        ___deadline: zx::MonotonicInstant,
2460    ) -> Result<
2461        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2462        fidl::Error,
2463    > {
2464        let _response = self.client.send_query::<
2465            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2466            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2467        >(
2468            (value,),
2469            0x4722b4ce52f7840,
2470            fidl::encoding::DynamicFlags::empty(),
2471            ___deadline,
2472        )?;
2473        Ok(_response.map(|x| x))
2474    }
2475
2476    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2477    pub fn r#get_ip_receive_original_destination_address(
2478        &self,
2479        ___deadline: zx::MonotonicInstant,
2480    ) -> Result<
2481        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2482        fidl::Error,
2483    > {
2484        let _response = self.client.send_query::<
2485            fidl::encoding::EmptyPayload,
2486            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2487        >(
2488            (),
2489            0x2a0e7dc5d6bfdfe9,
2490            fidl::encoding::DynamicFlags::empty(),
2491            ___deadline,
2492        )?;
2493        Ok(_response.map(|x| x.value))
2494    }
2495
2496    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2497    pub fn r#add_ipv6_membership(
2498        &self,
2499        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2500        ___deadline: zx::MonotonicInstant,
2501    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2502    {
2503        let _response = self.client.send_query::<
2504            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2505            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2506        >(
2507            (membership,),
2508            0x7c94727acb4ea4b3,
2509            fidl::encoding::DynamicFlags::empty(),
2510            ___deadline,
2511        )?;
2512        Ok(_response.map(|x| x))
2513    }
2514
2515    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2516    pub fn r#drop_ipv6_membership(
2517        &self,
2518        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2519        ___deadline: zx::MonotonicInstant,
2520    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2521    {
2522        let _response = self.client.send_query::<
2523            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2524            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2525        >(
2526            (membership,),
2527            0x42104c70ccaba304,
2528            fidl::encoding::DynamicFlags::empty(),
2529            ___deadline,
2530        )?;
2531        Ok(_response.map(|x| x))
2532    }
2533
2534    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2535    pub fn r#set_ipv6_multicast_interface(
2536        &self,
2537        mut value: u64,
2538        ___deadline: zx::MonotonicInstant,
2539    ) -> Result<
2540        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2541        fidl::Error,
2542    > {
2543        let _response = self.client.send_query::<
2544            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2545            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2546        >(
2547            (value,),
2548            0x135f76db3774ab3b,
2549            fidl::encoding::DynamicFlags::empty(),
2550            ___deadline,
2551        )?;
2552        Ok(_response.map(|x| x))
2553    }
2554
2555    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2556    pub fn r#get_ipv6_multicast_interface(
2557        &self,
2558        ___deadline: zx::MonotonicInstant,
2559    ) -> Result<
2560        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2561        fidl::Error,
2562    > {
2563        let _response = self
2564            .client
2565            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2566                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2567                fidl_fuchsia_posix::Errno,
2568            >>(
2569                (), 0x1f26fcdd348f1882, fidl::encoding::DynamicFlags::empty(), ___deadline
2570            )?;
2571        Ok(_response.map(|x| x.value))
2572    }
2573
2574    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2575    pub fn r#set_ipv6_unicast_hops(
2576        &self,
2577        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2578        ___deadline: zx::MonotonicInstant,
2579    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2580    {
2581        let _response = self.client.send_query::<
2582            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2583            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2584        >(
2585            (value,),
2586            0x157d51e98f462859,
2587            fidl::encoding::DynamicFlags::empty(),
2588            ___deadline,
2589        )?;
2590        Ok(_response.map(|x| x))
2591    }
2592
2593    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2594    pub fn r#get_ipv6_unicast_hops(
2595        &self,
2596        ___deadline: zx::MonotonicInstant,
2597    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2598    {
2599        let _response = self
2600            .client
2601            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2602                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2603                fidl_fuchsia_posix::Errno,
2604            >>(
2605                (), 0x21f4641cad8bd8d2, fidl::encoding::DynamicFlags::empty(), ___deadline
2606            )?;
2607        Ok(_response.map(|x| x.value))
2608    }
2609
2610    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2611    pub fn r#set_ipv6_receive_hop_limit(
2612        &self,
2613        mut value: bool,
2614        ___deadline: zx::MonotonicInstant,
2615    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2616    {
2617        let _response = self.client.send_query::<
2618            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2619            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2620        >(
2621            (value,),
2622            0x5c24808ed2e84a1e,
2623            fidl::encoding::DynamicFlags::empty(),
2624            ___deadline,
2625        )?;
2626        Ok(_response.map(|x| x))
2627    }
2628
2629    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2630    pub fn r#get_ipv6_receive_hop_limit(
2631        &self,
2632        ___deadline: zx::MonotonicInstant,
2633    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2634    {
2635        let _response = self
2636            .client
2637            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2638                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2639                fidl_fuchsia_posix::Errno,
2640            >>(
2641                (), 0x341e06689885b4c0, fidl::encoding::DynamicFlags::empty(), ___deadline
2642            )?;
2643        Ok(_response.map(|x| x.value))
2644    }
2645
2646    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2647    pub fn r#set_ipv6_multicast_hops(
2648        &self,
2649        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2650        ___deadline: zx::MonotonicInstant,
2651    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2652    {
2653        let _response = self.client.send_query::<
2654            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2655            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2656        >(
2657            (value,),
2658            0x25b9cd4d181f82c1,
2659            fidl::encoding::DynamicFlags::empty(),
2660            ___deadline,
2661        )?;
2662        Ok(_response.map(|x| x))
2663    }
2664
2665    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2666    pub fn r#get_ipv6_multicast_hops(
2667        &self,
2668        ___deadline: zx::MonotonicInstant,
2669    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2670    {
2671        let _response = self
2672            .client
2673            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2674                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2675                fidl_fuchsia_posix::Errno,
2676            >>(
2677                (), 0x52916948a365012a, fidl::encoding::DynamicFlags::empty(), ___deadline
2678            )?;
2679        Ok(_response.map(|x| x.value))
2680    }
2681
2682    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2683    pub fn r#set_ipv6_multicast_loopback(
2684        &self,
2685        mut value: bool,
2686        ___deadline: zx::MonotonicInstant,
2687    ) -> Result<
2688        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2689        fidl::Error,
2690    > {
2691        let _response = self.client.send_query::<
2692            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2693            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2694        >(
2695            (value,),
2696            0x55701c409ff41b40,
2697            fidl::encoding::DynamicFlags::empty(),
2698            ___deadline,
2699        )?;
2700        Ok(_response.map(|x| x))
2701    }
2702
2703    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2704    pub fn r#get_ipv6_multicast_loopback(
2705        &self,
2706        ___deadline: zx::MonotonicInstant,
2707    ) -> Result<
2708        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2709        fidl::Error,
2710    > {
2711        let _response = self
2712            .client
2713            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2714                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2715                fidl_fuchsia_posix::Errno,
2716            >>(
2717                (), 0x4415b701fde319c3, fidl::encoding::DynamicFlags::empty(), ___deadline
2718            )?;
2719        Ok(_response.map(|x| x.value))
2720    }
2721
2722    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2723    pub fn r#set_ipv6_only(
2724        &self,
2725        mut value: bool,
2726        ___deadline: zx::MonotonicInstant,
2727    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2728        let _response = self.client.send_query::<
2729            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2730            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2731        >(
2732            (value,),
2733            0x4873f1364758cbba,
2734            fidl::encoding::DynamicFlags::empty(),
2735            ___deadline,
2736        )?;
2737        Ok(_response.map(|x| x))
2738    }
2739
2740    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2741    pub fn r#get_ipv6_only(
2742        &self,
2743        ___deadline: zx::MonotonicInstant,
2744    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2745        let _response = self
2746            .client
2747            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2748                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2749                fidl_fuchsia_posix::Errno,
2750            >>(
2751                (), 0x4aa3340a1a26b89c, fidl::encoding::DynamicFlags::empty(), ___deadline
2752            )?;
2753        Ok(_response.map(|x| x.value))
2754    }
2755
2756    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2757    pub fn r#set_ipv6_receive_traffic_class(
2758        &self,
2759        mut value: bool,
2760        ___deadline: zx::MonotonicInstant,
2761    ) -> Result<
2762        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2763        fidl::Error,
2764    > {
2765        let _response = self.client.send_query::<
2766            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2767            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2768        >(
2769            (value,),
2770            0x58f07c8788d099a0,
2771            fidl::encoding::DynamicFlags::empty(),
2772            ___deadline,
2773        )?;
2774        Ok(_response.map(|x| x))
2775    }
2776
2777    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2778    pub fn r#get_ipv6_receive_traffic_class(
2779        &self,
2780        ___deadline: zx::MonotonicInstant,
2781    ) -> Result<
2782        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2783        fidl::Error,
2784    > {
2785        let _response = self
2786            .client
2787            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2788                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2789                fidl_fuchsia_posix::Errno,
2790            >>(
2791                (), 0x2e334df1da553ffa, fidl::encoding::DynamicFlags::empty(), ___deadline
2792            )?;
2793        Ok(_response.map(|x| x.value))
2794    }
2795
2796    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2797    pub fn r#set_ipv6_traffic_class(
2798        &self,
2799        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2800        ___deadline: zx::MonotonicInstant,
2801    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2802    {
2803        let _response = self.client.send_query::<
2804            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2805            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2806        >(
2807            (value,),
2808            0x6af077800c5a0b4f,
2809            fidl::encoding::DynamicFlags::empty(),
2810            ___deadline,
2811        )?;
2812        Ok(_response.map(|x| x))
2813    }
2814
2815    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2816    pub fn r#get_ipv6_traffic_class(
2817        &self,
2818        ___deadline: zx::MonotonicInstant,
2819    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2820    {
2821        let _response = self
2822            .client
2823            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2824                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2825                fidl_fuchsia_posix::Errno,
2826            >>(
2827                (), 0x6baf6eed8fc2f04, fidl::encoding::DynamicFlags::empty(), ___deadline
2828            )?;
2829        Ok(_response.map(|x| x.value))
2830    }
2831
2832    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2833    pub fn r#set_ipv6_receive_packet_info(
2834        &self,
2835        mut value: bool,
2836        ___deadline: zx::MonotonicInstant,
2837    ) -> Result<
2838        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2839        fidl::Error,
2840    > {
2841        let _response = self.client.send_query::<
2842            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2843            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2844        >(
2845            (value,),
2846            0x19259775b1a92768,
2847            fidl::encoding::DynamicFlags::empty(),
2848            ___deadline,
2849        )?;
2850        Ok(_response.map(|x| x))
2851    }
2852
2853    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2854    pub fn r#get_ipv6_receive_packet_info(
2855        &self,
2856        ___deadline: zx::MonotonicInstant,
2857    ) -> Result<
2858        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2859        fidl::Error,
2860    > {
2861        let _response = self
2862            .client
2863            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2864                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2865                fidl_fuchsia_posix::Errno,
2866            >>(
2867                (), 0x7acd4a2775baec75, fidl::encoding::DynamicFlags::empty(), ___deadline
2868            )?;
2869        Ok(_response.map(|x| x.value))
2870    }
2871
2872    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2873    pub fn r#get_original_destination(
2874        &self,
2875        ___deadline: zx::MonotonicInstant,
2876    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2877    {
2878        let _response = self
2879            .client
2880            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2881                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
2882                fidl_fuchsia_posix::Errno,
2883            >>(
2884                (), 0x38bf28f0dafdbac0, fidl::encoding::DynamicFlags::empty(), ___deadline
2885            )?;
2886        Ok(_response.map(|x| x.value))
2887    }
2888
2889    pub fn r#describe(
2890        &self,
2891        ___deadline: zx::MonotonicInstant,
2892    ) -> Result<SocketDescribeResponse, fidl::Error> {
2893        let _response =
2894            self.client.send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
2895                (),
2896                0x335706eccf54a135,
2897                fidl::encoding::DynamicFlags::empty(),
2898                ___deadline,
2899            )?;
2900        Ok(_response)
2901    }
2902
2903    /// Receives a message from the socket.
2904    ///
2905    /// + request `want_addr` request message's source address information to
2906    ///   be returned.
2907    /// + request `data_len` the maximum allowed length of the response data
2908    ///   buffer.
2909    /// + request `want_control` request ancillary data to be returned.
2910    /// + request `flags` flags for the receive request.
2911    /// - response `addr` the message's source address information, if
2912    ///   requested.
2913    /// - response `data` the message.
2914    /// - response `control` control messages, if requested.
2915    /// - response `truncated` indicates whether or not the returned message
2916    ///   was truncated.
2917    pub fn r#recv_msg(
2918        &self,
2919        mut want_addr: bool,
2920        mut data_len: u32,
2921        mut want_control: bool,
2922        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
2923        ___deadline: zx::MonotonicInstant,
2924    ) -> Result<SocketRecvMsgResult, fidl::Error> {
2925        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
2926            SocketRecvMsgResponse,
2927            fidl_fuchsia_posix::Errno,
2928        >>(
2929            (want_addr, data_len, want_control, flags),
2930            0x1dfb695351d3aa1d,
2931            fidl::encoding::DynamicFlags::empty(),
2932            ___deadline,
2933        )?;
2934        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
2935    }
2936
2937    /// Sends a message on the socket.
2938    ///
2939    /// + request `addr` the address to send the message to. If unset, will
2940    ///   send to the connected peer.
2941    /// + request `data` the message.
2942    /// + request `control` ancillary data.
2943    /// + request `flags` flags for the send request.
2944    pub fn r#send_msg(
2945        &self,
2946        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
2947        mut data: &[u8],
2948        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
2949        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
2950        ___deadline: zx::MonotonicInstant,
2951    ) -> Result<SocketSendMsgResult, fidl::Error> {
2952        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
2953            fidl::encoding::EmptyStruct,
2954            fidl_fuchsia_posix::Errno,
2955        >>(
2956            (addr, data, control, flags),
2957            0x2cf1eac9a7fc8958,
2958            fidl::encoding::DynamicFlags::empty(),
2959            ___deadline,
2960        )?;
2961        Ok(_response.map(|x| x))
2962    }
2963
2964    /// Retrieves creation information from the socket.
2965    ///
2966    /// - response `domain` the socket's associated domain.
2967    /// - response `proto` the socket's associated protocol.
2968    pub fn r#get_info(
2969        &self,
2970        ___deadline: zx::MonotonicInstant,
2971    ) -> Result<SocketGetInfoResult, fidl::Error> {
2972        let _response =
2973            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2974                SocketGetInfoResponse,
2975                fidl_fuchsia_posix::Errno,
2976            >>(
2977                (),
2978                0x39676f75aec339ba,
2979                fidl::encoding::DynamicFlags::empty(),
2980                ___deadline,
2981            )?;
2982        Ok(_response.map(|x| (x.domain, x.proto)))
2983    }
2984
2985    /// Set `SOL_IP` -> `IP_HDRINCL`.
2986    pub fn r#set_ip_header_included(
2987        &self,
2988        mut value: bool,
2989        ___deadline: zx::MonotonicInstant,
2990    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
2991        let _response =
2992            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
2993                fidl::encoding::EmptyStruct,
2994                fidl_fuchsia_posix::Errno,
2995            >>(
2996                (value,),
2997                0x5d06a606d95e8f3,
2998                fidl::encoding::DynamicFlags::empty(),
2999                ___deadline,
3000            )?;
3001        Ok(_response.map(|x| x))
3002    }
3003
3004    /// Get `SOL_IP` -> `IP_HDRINCL`.
3005    pub fn r#get_ip_header_included(
3006        &self,
3007        ___deadline: zx::MonotonicInstant,
3008    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
3009        let _response = self
3010            .client
3011            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3012                SocketGetIpHeaderIncludedResponse,
3013                fidl_fuchsia_posix::Errno,
3014            >>(
3015                (), 0x76125ad1f4d175f6, fidl::encoding::DynamicFlags::empty(), ___deadline
3016            )?;
3017        Ok(_response.map(|x| x.value))
3018    }
3019
3020    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
3021    pub fn r#set_icmpv6_filter(
3022        &self,
3023        mut filter: &Icmpv6Filter,
3024        ___deadline: zx::MonotonicInstant,
3025    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3026        let _response =
3027            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3028                fidl::encoding::EmptyStruct,
3029                fidl_fuchsia_posix::Errno,
3030            >>(
3031                (filter,),
3032                0x4ebea92a43ae68a9,
3033                fidl::encoding::DynamicFlags::empty(),
3034                ___deadline,
3035            )?;
3036        Ok(_response.map(|x| x))
3037    }
3038
3039    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3040    pub fn r#get_icmpv6_filter(
3041        &self,
3042        ___deadline: zx::MonotonicInstant,
3043    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3044        let _response =
3045            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3046                SocketGetIcmpv6FilterResponse,
3047                fidl_fuchsia_posix::Errno,
3048            >>(
3049                (),
3050                0x43bd4f3bc0970ace,
3051                fidl::encoding::DynamicFlags::empty(),
3052                ___deadline,
3053            )?;
3054        Ok(_response.map(|x| x.filter))
3055    }
3056
3057    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3058    pub fn r#set_ipv6_checksum(
3059        &self,
3060        mut config: &Ipv6ChecksumConfiguration,
3061        ___deadline: zx::MonotonicInstant,
3062    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3063        let _response =
3064            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3065                fidl::encoding::EmptyStruct,
3066                fidl_fuchsia_posix::Errno,
3067            >>(
3068                (config,),
3069                0x18b7809577199cb4,
3070                fidl::encoding::DynamicFlags::empty(),
3071                ___deadline,
3072            )?;
3073        Ok(_response.map(|x| x))
3074    }
3075
3076    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3077    pub fn r#get_ipv6_checksum(
3078        &self,
3079        ___deadline: zx::MonotonicInstant,
3080    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3081        let _response =
3082            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3083                SocketGetIpv6ChecksumResponse,
3084                fidl_fuchsia_posix::Errno,
3085            >>(
3086                (),
3087                0x1847bf5b2d263dd,
3088                fidl::encoding::DynamicFlags::empty(),
3089                ___deadline,
3090            )?;
3091        Ok(_response.map(|x| x.config))
3092    }
3093}
3094
3095#[cfg(target_os = "fuchsia")]
3096impl From<SocketSynchronousProxy> for zx::Handle {
3097    fn from(value: SocketSynchronousProxy) -> Self {
3098        value.into_channel().into()
3099    }
3100}
3101
3102#[cfg(target_os = "fuchsia")]
3103impl From<fidl::Channel> for SocketSynchronousProxy {
3104    fn from(value: fidl::Channel) -> Self {
3105        Self::new(value)
3106    }
3107}
3108
3109#[cfg(target_os = "fuchsia")]
3110impl fidl::endpoints::FromClient for SocketSynchronousProxy {
3111    type Protocol = SocketMarker;
3112
3113    fn from_client(value: fidl::endpoints::ClientEnd<SocketMarker>) -> Self {
3114        Self::new(value.into_channel())
3115    }
3116}
3117
3118#[derive(Debug, Clone)]
3119pub struct SocketProxy {
3120    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3121}
3122
3123impl fidl::endpoints::Proxy for SocketProxy {
3124    type Protocol = SocketMarker;
3125
3126    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3127        Self::new(inner)
3128    }
3129
3130    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3131        self.client.into_channel().map_err(|client| Self { client })
3132    }
3133
3134    fn as_channel(&self) -> &::fidl::AsyncChannel {
3135        self.client.as_channel()
3136    }
3137}
3138
3139impl SocketProxy {
3140    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3141    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3142        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3143        Self { client: fidl::client::Client::new(channel, protocol_name) }
3144    }
3145
3146    /// Get a Stream of events from the remote end of the protocol.
3147    ///
3148    /// # Panics
3149    ///
3150    /// Panics if the event stream was already taken.
3151    pub fn take_event_stream(&self) -> SocketEventStream {
3152        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3153    }
3154
3155    pub fn r#clone(
3156        &self,
3157        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3158    ) -> Result<(), fidl::Error> {
3159        SocketProxyInterface::r#clone(self, request)
3160    }
3161
3162    /// Terminates the connection.
3163    ///
3164    /// After calling `Close`, the client must not send any other requests.
3165    ///
3166    /// Servers, after sending the status response, should close the connection
3167    /// regardless of status and without sending an epitaph.
3168    ///
3169    /// Closing the client end of the channel should be semantically equivalent
3170    /// to calling `Close` without knowing when the close has completed or its
3171    /// status.
3172    pub fn r#close(
3173        &self,
3174    ) -> fidl::client::QueryResponseFut<
3175        fidl_fuchsia_unknown::CloseableCloseResult,
3176        fidl::encoding::DefaultFuchsiaResourceDialect,
3177    > {
3178        SocketProxyInterface::r#close(self)
3179    }
3180
3181    pub fn r#query(
3182        &self,
3183    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3184    {
3185        SocketProxyInterface::r#query(self)
3186    }
3187
3188    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3189    pub fn r#set_reuse_address(
3190        &self,
3191        mut value: bool,
3192    ) -> fidl::client::QueryResponseFut<
3193        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3194        fidl::encoding::DefaultFuchsiaResourceDialect,
3195    > {
3196        SocketProxyInterface::r#set_reuse_address(self, value)
3197    }
3198
3199    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3200    pub fn r#get_reuse_address(
3201        &self,
3202    ) -> fidl::client::QueryResponseFut<
3203        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3204        fidl::encoding::DefaultFuchsiaResourceDialect,
3205    > {
3206        SocketProxyInterface::r#get_reuse_address(self)
3207    }
3208
3209    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3210    /// Returns the last error if there is an error set on the socket.
3211    pub fn r#get_error(
3212        &self,
3213    ) -> fidl::client::QueryResponseFut<
3214        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3215        fidl::encoding::DefaultFuchsiaResourceDialect,
3216    > {
3217        SocketProxyInterface::r#get_error(self)
3218    }
3219
3220    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3221    pub fn r#set_broadcast(
3222        &self,
3223        mut value: bool,
3224    ) -> fidl::client::QueryResponseFut<
3225        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3226        fidl::encoding::DefaultFuchsiaResourceDialect,
3227    > {
3228        SocketProxyInterface::r#set_broadcast(self, value)
3229    }
3230
3231    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3232    pub fn r#get_broadcast(
3233        &self,
3234    ) -> fidl::client::QueryResponseFut<
3235        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3236        fidl::encoding::DefaultFuchsiaResourceDialect,
3237    > {
3238        SocketProxyInterface::r#get_broadcast(self)
3239    }
3240
3241    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3242    pub fn r#set_send_buffer(
3243        &self,
3244        mut value_bytes: u64,
3245    ) -> fidl::client::QueryResponseFut<
3246        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3247        fidl::encoding::DefaultFuchsiaResourceDialect,
3248    > {
3249        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3250    }
3251
3252    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3253    pub fn r#get_send_buffer(
3254        &self,
3255    ) -> fidl::client::QueryResponseFut<
3256        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3257        fidl::encoding::DefaultFuchsiaResourceDialect,
3258    > {
3259        SocketProxyInterface::r#get_send_buffer(self)
3260    }
3261
3262    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3263    pub fn r#set_receive_buffer(
3264        &self,
3265        mut value_bytes: u64,
3266    ) -> fidl::client::QueryResponseFut<
3267        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3268        fidl::encoding::DefaultFuchsiaResourceDialect,
3269    > {
3270        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3271    }
3272
3273    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3274    pub fn r#get_receive_buffer(
3275        &self,
3276    ) -> fidl::client::QueryResponseFut<
3277        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3278        fidl::encoding::DefaultFuchsiaResourceDialect,
3279    > {
3280        SocketProxyInterface::r#get_receive_buffer(self)
3281    }
3282
3283    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3284    pub fn r#set_keep_alive(
3285        &self,
3286        mut value: bool,
3287    ) -> fidl::client::QueryResponseFut<
3288        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3289        fidl::encoding::DefaultFuchsiaResourceDialect,
3290    > {
3291        SocketProxyInterface::r#set_keep_alive(self, value)
3292    }
3293
3294    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3295    pub fn r#get_keep_alive(
3296        &self,
3297    ) -> fidl::client::QueryResponseFut<
3298        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3299        fidl::encoding::DefaultFuchsiaResourceDialect,
3300    > {
3301        SocketProxyInterface::r#get_keep_alive(self)
3302    }
3303
3304    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3305    pub fn r#set_out_of_band_inline(
3306        &self,
3307        mut value: bool,
3308    ) -> fidl::client::QueryResponseFut<
3309        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3310        fidl::encoding::DefaultFuchsiaResourceDialect,
3311    > {
3312        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3313    }
3314
3315    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3316    pub fn r#get_out_of_band_inline(
3317        &self,
3318    ) -> fidl::client::QueryResponseFut<
3319        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3320        fidl::encoding::DefaultFuchsiaResourceDialect,
3321    > {
3322        SocketProxyInterface::r#get_out_of_band_inline(self)
3323    }
3324
3325    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3326    pub fn r#set_no_check(
3327        &self,
3328        mut value: bool,
3329    ) -> fidl::client::QueryResponseFut<
3330        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3331        fidl::encoding::DefaultFuchsiaResourceDialect,
3332    > {
3333        SocketProxyInterface::r#set_no_check(self, value)
3334    }
3335
3336    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3337    pub fn r#get_no_check(
3338        &self,
3339    ) -> fidl::client::QueryResponseFut<
3340        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3341        fidl::encoding::DefaultFuchsiaResourceDialect,
3342    > {
3343        SocketProxyInterface::r#get_no_check(self)
3344    }
3345
3346    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3347    pub fn r#set_linger(
3348        &self,
3349        mut linger: bool,
3350        mut length_secs: u32,
3351    ) -> fidl::client::QueryResponseFut<
3352        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3353        fidl::encoding::DefaultFuchsiaResourceDialect,
3354    > {
3355        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3356    }
3357
3358    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3359    pub fn r#get_linger(
3360        &self,
3361    ) -> fidl::client::QueryResponseFut<
3362        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3363        fidl::encoding::DefaultFuchsiaResourceDialect,
3364    > {
3365        SocketProxyInterface::r#get_linger(self)
3366    }
3367
3368    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3369    pub fn r#set_reuse_port2(
3370        &self,
3371        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
3372    ) -> fidl::client::QueryResponseFut<
3373        fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Result,
3374        fidl::encoding::DefaultFuchsiaResourceDialect,
3375    > {
3376        SocketProxyInterface::r#set_reuse_port2(self, value)
3377    }
3378
3379    /// Old version of `SetReusePort`. Will be deprecated and removed in the
3380    /// future.
3381    pub fn r#set_reuse_port(
3382        &self,
3383        mut value: bool,
3384    ) -> fidl::client::QueryResponseFut<
3385        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3386        fidl::encoding::DefaultFuchsiaResourceDialect,
3387    > {
3388        SocketProxyInterface::r#set_reuse_port(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 SetReusePort2ResponseFut = fidl::client::QueryResponseFut<
4694        fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Result,
4695        fidl::encoding::DefaultFuchsiaResourceDialect,
4696    >;
4697    fn r#set_reuse_port2(
4698        &self,
4699        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
4700    ) -> Self::SetReusePort2ResponseFut {
4701        fn _decode(
4702            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4703        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Result, 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::BaseSocketSetReusePort2Request,
4713            fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Result,
4714        >(
4715            (&mut value,),
4716            0x547dc9cc0455189e,
4717            fidl::encoding::DynamicFlags::empty(),
4718            _decode,
4719        )
4720    }
4721
4722    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4723        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4724        fidl::encoding::DefaultFuchsiaResourceDialect,
4725    >;
4726    fn r#set_reuse_port(&self, mut value: bool) -> Self::SetReusePortResponseFut {
4727        fn _decode(
4728            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4729        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4730            let _response = fidl::client::decode_transaction_body::<
4731                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4732                fidl::encoding::DefaultFuchsiaResourceDialect,
4733                0x24dd3e5cb36d9ccb,
4734            >(_buf?)?;
4735            Ok(_response.map(|x| x))
4736        }
4737        self.client.send_query_and_decode::<
4738            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4739            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4740        >(
4741            (value,),
4742            0x24dd3e5cb36d9ccb,
4743            fidl::encoding::DynamicFlags::empty(),
4744            _decode,
4745        )
4746    }
4747
4748    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4749        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4750        fidl::encoding::DefaultFuchsiaResourceDialect,
4751    >;
4752    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4753        fn _decode(
4754            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4755        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4756            let _response = fidl::client::decode_transaction_body::<
4757                fidl::encoding::ResultType<
4758                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4759                    fidl_fuchsia_posix::Errno,
4760                >,
4761                fidl::encoding::DefaultFuchsiaResourceDialect,
4762                0x7a112c1ab54ff828,
4763            >(_buf?)?;
4764            Ok(_response.map(|x| x.value))
4765        }
4766        self.client.send_query_and_decode::<
4767            fidl::encoding::EmptyPayload,
4768            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4769        >(
4770            (),
4771            0x7a112c1ab54ff828,
4772            fidl::encoding::DynamicFlags::empty(),
4773            _decode,
4774        )
4775    }
4776
4777    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4778        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4779        fidl::encoding::DefaultFuchsiaResourceDialect,
4780    >;
4781    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4782        fn _decode(
4783            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4784        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4785            let _response = fidl::client::decode_transaction_body::<
4786                fidl::encoding::ResultType<
4787                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4788                    fidl_fuchsia_posix::Errno,
4789                >,
4790                fidl::encoding::DefaultFuchsiaResourceDialect,
4791                0x67ce6db6c2ec8966,
4792            >(_buf?)?;
4793            Ok(_response.map(|x| x.value))
4794        }
4795        self.client.send_query_and_decode::<
4796            fidl::encoding::EmptyPayload,
4797            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4798        >(
4799            (),
4800            0x67ce6db6c2ec8966,
4801            fidl::encoding::DynamicFlags::empty(),
4802            _decode,
4803        )
4804    }
4805
4806    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4807        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4808        fidl::encoding::DefaultFuchsiaResourceDialect,
4809    >;
4810    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4811        fn _decode(
4812            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4813        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4814        {
4815            let _response = fidl::client::decode_transaction_body::<
4816                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4817                fidl::encoding::DefaultFuchsiaResourceDialect,
4818                0x2118b483f28aafc4,
4819            >(_buf?)?;
4820            Ok(_response.map(|x| x))
4821        }
4822        self.client.send_query_and_decode::<
4823            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4824            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4825        >(
4826            (value,),
4827            0x2118b483f28aafc4,
4828            fidl::encoding::DynamicFlags::empty(),
4829            _decode,
4830        )
4831    }
4832
4833    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4834        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4835        fidl::encoding::DefaultFuchsiaResourceDialect,
4836    >;
4837    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4838        fn _decode(
4839            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4840        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4841        {
4842            let _response = fidl::client::decode_transaction_body::<
4843                fidl::encoding::ResultType<
4844                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4845                    fidl_fuchsia_posix::Errno,
4846                >,
4847                fidl::encoding::DefaultFuchsiaResourceDialect,
4848                0x1ab1fbf0ef7906c8,
4849            >(_buf?)?;
4850            Ok(_response.map(|x| x.value))
4851        }
4852        self.client.send_query_and_decode::<
4853            fidl::encoding::EmptyPayload,
4854            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4855        >(
4856            (),
4857            0x1ab1fbf0ef7906c8,
4858            fidl::encoding::DynamicFlags::empty(),
4859            _decode,
4860        )
4861    }
4862
4863    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4864        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4865        fidl::encoding::DefaultFuchsiaResourceDialect,
4866    >;
4867    fn r#set_bind_to_interface_index(
4868        &self,
4869        mut value: u64,
4870    ) -> Self::SetBindToInterfaceIndexResponseFut {
4871        fn _decode(
4872            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4873        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
4874        {
4875            let _response = fidl::client::decode_transaction_body::<
4876                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4877                fidl::encoding::DefaultFuchsiaResourceDialect,
4878                0x6e387a0def00821,
4879            >(_buf?)?;
4880            Ok(_response.map(|x| x))
4881        }
4882        self.client.send_query_and_decode::<
4883            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
4884            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4885        >(
4886            (value,),
4887            0x6e387a0def00821,
4888            fidl::encoding::DynamicFlags::empty(),
4889            _decode,
4890        )
4891    }
4892
4893    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4894        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4895        fidl::encoding::DefaultFuchsiaResourceDialect,
4896    >;
4897    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
4898        fn _decode(
4899            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4900        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
4901        {
4902            let _response = fidl::client::decode_transaction_body::<
4903                fidl::encoding::ResultType<
4904                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
4905                    fidl_fuchsia_posix::Errno,
4906                >,
4907                fidl::encoding::DefaultFuchsiaResourceDialect,
4908                0x59c31dd3e3078295,
4909            >(_buf?)?;
4910            Ok(_response.map(|x| x.value))
4911        }
4912        self.client.send_query_and_decode::<
4913            fidl::encoding::EmptyPayload,
4914            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4915        >(
4916            (),
4917            0x59c31dd3e3078295,
4918            fidl::encoding::DynamicFlags::empty(),
4919            _decode,
4920        )
4921    }
4922
4923    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
4924        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4925        fidl::encoding::DefaultFuchsiaResourceDialect,
4926    >;
4927    fn r#set_timestamp(
4928        &self,
4929        mut value: fidl_fuchsia_posix_socket::TimestampOption,
4930    ) -> Self::SetTimestampResponseFut {
4931        fn _decode(
4932            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4933        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
4934            let _response = fidl::client::decode_transaction_body::<
4935                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4936                fidl::encoding::DefaultFuchsiaResourceDialect,
4937                0x285d6516c263d839,
4938            >(_buf?)?;
4939            Ok(_response.map(|x| x))
4940        }
4941        self.client.send_query_and_decode::<
4942            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
4943            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4944        >(
4945            (value,),
4946            0x285d6516c263d839,
4947            fidl::encoding::DynamicFlags::empty(),
4948            _decode,
4949        )
4950    }
4951
4952    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
4953        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4954        fidl::encoding::DefaultFuchsiaResourceDialect,
4955    >;
4956    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
4957        fn _decode(
4958            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4959        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
4960            let _response = fidl::client::decode_transaction_body::<
4961                fidl::encoding::ResultType<
4962                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
4963                    fidl_fuchsia_posix::Errno,
4964                >,
4965                fidl::encoding::DefaultFuchsiaResourceDialect,
4966                0x49f2fffbbcc2bd27,
4967            >(_buf?)?;
4968            Ok(_response.map(|x| x.value))
4969        }
4970        self.client.send_query_and_decode::<
4971            fidl::encoding::EmptyPayload,
4972            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4973        >(
4974            (),
4975            0x49f2fffbbcc2bd27,
4976            fidl::encoding::DynamicFlags::empty(),
4977            _decode,
4978        )
4979    }
4980
4981    type SetMarkResponseFut = fidl::client::QueryResponseFut<
4982        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
4983        fidl::encoding::DefaultFuchsiaResourceDialect,
4984    >;
4985    fn r#set_mark(
4986        &self,
4987        mut domain: fidl_fuchsia_net::MarkDomain,
4988        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
4989    ) -> Self::SetMarkResponseFut {
4990        fn _decode(
4991            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4992        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
4993            let _response = fidl::client::decode_transaction_body::<
4994                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4995                fidl::encoding::DefaultFuchsiaResourceDialect,
4996                0x6ead6de09f653236,
4997            >(_buf?)?;
4998            Ok(_response.map(|x| x))
4999        }
5000        self.client.send_query_and_decode::<
5001            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
5002            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5003        >(
5004            (domain, mark,),
5005            0x6ead6de09f653236,
5006            fidl::encoding::DynamicFlags::empty(),
5007            _decode,
5008        )
5009    }
5010
5011    type GetMarkResponseFut = fidl::client::QueryResponseFut<
5012        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5013        fidl::encoding::DefaultFuchsiaResourceDialect,
5014    >;
5015    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
5016        fn _decode(
5017            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5018        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
5019            let _response = fidl::client::decode_transaction_body::<
5020                fidl::encoding::ResultType<
5021                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
5022                    fidl_fuchsia_posix::Errno,
5023                >,
5024                fidl::encoding::DefaultFuchsiaResourceDialect,
5025                0x57a2752c61d93d47,
5026            >(_buf?)?;
5027            Ok(_response.map(|x| x.mark))
5028        }
5029        self.client.send_query_and_decode::<
5030            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
5031            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5032        >(
5033            (domain,),
5034            0x57a2752c61d93d47,
5035            fidl::encoding::DynamicFlags::empty(),
5036            _decode,
5037        )
5038    }
5039
5040    type GetCookieResponseFut = fidl::client::QueryResponseFut<
5041        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5042        fidl::encoding::DefaultFuchsiaResourceDialect,
5043    >;
5044    fn r#get_cookie(&self) -> Self::GetCookieResponseFut {
5045        fn _decode(
5046            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5047        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
5048            let _response = fidl::client::decode_transaction_body::<
5049                fidl::encoding::ResultType<
5050                    fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
5051                    fidl_fuchsia_posix::Errno,
5052                >,
5053                fidl::encoding::DefaultFuchsiaResourceDialect,
5054                0x2c2f47fd8f924e52,
5055            >(_buf?)?;
5056            Ok(_response.map(|x| x.value))
5057        }
5058        self.client.send_query_and_decode::<
5059            fidl::encoding::EmptyPayload,
5060            fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5061        >(
5062            (),
5063            0x2c2f47fd8f924e52,
5064            fidl::encoding::DynamicFlags::empty(),
5065            _decode,
5066        )
5067    }
5068
5069    type BindResponseFut = fidl::client::QueryResponseFut<
5070        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5071        fidl::encoding::DefaultFuchsiaResourceDialect,
5072    >;
5073    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5074        fn _decode(
5075            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5076        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5077            let _response = fidl::client::decode_transaction_body::<
5078                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5079                fidl::encoding::DefaultFuchsiaResourceDialect,
5080                0x4bc6400ae92125d,
5081            >(_buf?)?;
5082            Ok(_response.map(|x| x))
5083        }
5084        self.client.send_query_and_decode::<
5085            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5086            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5087        >(
5088            (addr,),
5089            0x4bc6400ae92125d,
5090            fidl::encoding::DynamicFlags::empty(),
5091            _decode,
5092        )
5093    }
5094
5095    type ConnectResponseFut = fidl::client::QueryResponseFut<
5096        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5097        fidl::encoding::DefaultFuchsiaResourceDialect,
5098    >;
5099    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5100        fn _decode(
5101            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5102        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5103        {
5104            let _response = fidl::client::decode_transaction_body::<
5105                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5106                fidl::encoding::DefaultFuchsiaResourceDialect,
5107                0x5f05f19bfdd38871,
5108            >(_buf?)?;
5109            Ok(_response.map(|x| x))
5110        }
5111        self.client.send_query_and_decode::<
5112            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5113            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5114        >(
5115            (addr,),
5116            0x5f05f19bfdd38871,
5117            fidl::encoding::DynamicFlags::empty(),
5118            _decode,
5119        )
5120    }
5121
5122    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5123        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5124        fidl::encoding::DefaultFuchsiaResourceDialect,
5125    >;
5126    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5127        fn _decode(
5128            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5129        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5130        {
5131            let _response = fidl::client::decode_transaction_body::<
5132                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5133                fidl::encoding::DefaultFuchsiaResourceDialect,
5134                0x74e63b91f7b29b2,
5135            >(_buf?)?;
5136            Ok(_response.map(|x| x))
5137        }
5138        self.client.send_query_and_decode::<
5139            fidl::encoding::EmptyPayload,
5140            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5141        >(
5142            (),
5143            0x74e63b91f7b29b2,
5144            fidl::encoding::DynamicFlags::empty(),
5145            _decode,
5146        )
5147    }
5148
5149    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5150        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5151        fidl::encoding::DefaultFuchsiaResourceDialect,
5152    >;
5153    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5154        fn _decode(
5155            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5156        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5157        {
5158            let _response = fidl::client::decode_transaction_body::<
5159                fidl::encoding::ResultType<
5160                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5161                    fidl_fuchsia_posix::Errno,
5162                >,
5163                fidl::encoding::DefaultFuchsiaResourceDialect,
5164                0x475f23f84a1a4f85,
5165            >(_buf?)?;
5166            Ok(_response.map(|x| x.addr))
5167        }
5168        self.client.send_query_and_decode::<
5169            fidl::encoding::EmptyPayload,
5170            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5171        >(
5172            (),
5173            0x475f23f84a1a4f85,
5174            fidl::encoding::DynamicFlags::empty(),
5175            _decode,
5176        )
5177    }
5178
5179    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5180        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5181        fidl::encoding::DefaultFuchsiaResourceDialect,
5182    >;
5183    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5184        fn _decode(
5185            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5186        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5187        {
5188            let _response = fidl::client::decode_transaction_body::<
5189                fidl::encoding::ResultType<
5190                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5191                    fidl_fuchsia_posix::Errno,
5192                >,
5193                fidl::encoding::DefaultFuchsiaResourceDialect,
5194                0x1ffecf4bd5b6432e,
5195            >(_buf?)?;
5196            Ok(_response.map(|x| x.addr))
5197        }
5198        self.client.send_query_and_decode::<
5199            fidl::encoding::EmptyPayload,
5200            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5201        >(
5202            (),
5203            0x1ffecf4bd5b6432e,
5204            fidl::encoding::DynamicFlags::empty(),
5205            _decode,
5206        )
5207    }
5208
5209    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5210        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5211        fidl::encoding::DefaultFuchsiaResourceDialect,
5212    >;
5213    fn r#shutdown(
5214        &self,
5215        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5216    ) -> Self::ShutdownResponseFut {
5217        fn _decode(
5218            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5219        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5220        {
5221            let _response = fidl::client::decode_transaction_body::<
5222                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5223                fidl::encoding::DefaultFuchsiaResourceDialect,
5224                0x247f38b6db68c336,
5225            >(_buf?)?;
5226            Ok(_response.map(|x| x))
5227        }
5228        self.client.send_query_and_decode::<
5229            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5230            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5231        >(
5232            (mode,),
5233            0x247f38b6db68c336,
5234            fidl::encoding::DynamicFlags::empty(),
5235            _decode,
5236        )
5237    }
5238
5239    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5240        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5241        fidl::encoding::DefaultFuchsiaResourceDialect,
5242    >;
5243    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5244        fn _decode(
5245            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5246        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5247        {
5248            let _response = fidl::client::decode_transaction_body::<
5249                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5250                fidl::encoding::DefaultFuchsiaResourceDialect,
5251                0x995c600475b6d46,
5252            >(_buf?)?;
5253            Ok(_response.map(|x| x))
5254        }
5255        self.client.send_query_and_decode::<
5256            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5257            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5258        >(
5259            (value,),
5260            0x995c600475b6d46,
5261            fidl::encoding::DynamicFlags::empty(),
5262            _decode,
5263        )
5264    }
5265
5266    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5267        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5268        fidl::encoding::DefaultFuchsiaResourceDialect,
5269    >;
5270    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5271        fn _decode(
5272            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5273        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5274        {
5275            let _response = fidl::client::decode_transaction_body::<
5276                fidl::encoding::ResultType<
5277                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5278                    fidl_fuchsia_posix::Errno,
5279                >,
5280                fidl::encoding::DefaultFuchsiaResourceDialect,
5281                0x3814a04259f75fcb,
5282            >(_buf?)?;
5283            Ok(_response.map(|x| x.value))
5284        }
5285        self.client.send_query_and_decode::<
5286            fidl::encoding::EmptyPayload,
5287            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5288        >(
5289            (),
5290            0x3814a04259f75fcb,
5291            fidl::encoding::DynamicFlags::empty(),
5292            _decode,
5293        )
5294    }
5295
5296    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5297        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5298        fidl::encoding::DefaultFuchsiaResourceDialect,
5299    >;
5300    fn r#set_ip_ttl(
5301        &self,
5302        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5303    ) -> Self::SetIpTtlResponseFut {
5304        fn _decode(
5305            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5306        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5307        {
5308            let _response = fidl::client::decode_transaction_body::<
5309                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5310                fidl::encoding::DefaultFuchsiaResourceDialect,
5311                0x29e2424b433ae1ef,
5312            >(_buf?)?;
5313            Ok(_response.map(|x| x))
5314        }
5315        self.client.send_query_and_decode::<
5316            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5317            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5318        >(
5319            (value,),
5320            0x29e2424b433ae1ef,
5321            fidl::encoding::DynamicFlags::empty(),
5322            _decode,
5323        )
5324    }
5325
5326    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5327        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5328        fidl::encoding::DefaultFuchsiaResourceDialect,
5329    >;
5330    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5331        fn _decode(
5332            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5333        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5334        {
5335            let _response = fidl::client::decode_transaction_body::<
5336                fidl::encoding::ResultType<
5337                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5338                    fidl_fuchsia_posix::Errno,
5339                >,
5340                fidl::encoding::DefaultFuchsiaResourceDialect,
5341                0x47e47fa1f24da471,
5342            >(_buf?)?;
5343            Ok(_response.map(|x| x.value))
5344        }
5345        self.client.send_query_and_decode::<
5346            fidl::encoding::EmptyPayload,
5347            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5348        >(
5349            (),
5350            0x47e47fa1f24da471,
5351            fidl::encoding::DynamicFlags::empty(),
5352            _decode,
5353        )
5354    }
5355
5356    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5357        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5358        fidl::encoding::DefaultFuchsiaResourceDialect,
5359    >;
5360    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5361        fn _decode(
5362            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5363        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5364        {
5365            let _response = fidl::client::decode_transaction_body::<
5366                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5367                fidl::encoding::DefaultFuchsiaResourceDialect,
5368                0x392d16bee20c0e16,
5369            >(_buf?)?;
5370            Ok(_response.map(|x| x))
5371        }
5372        self.client.send_query_and_decode::<
5373            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5374            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5375        >(
5376            (value,),
5377            0x392d16bee20c0e16,
5378            fidl::encoding::DynamicFlags::empty(),
5379            _decode,
5380        )
5381    }
5382
5383    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5384        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5385        fidl::encoding::DefaultFuchsiaResourceDialect,
5386    >;
5387    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5388        fn _decode(
5389            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5390        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5391        {
5392            let _response = fidl::client::decode_transaction_body::<
5393                fidl::encoding::ResultType<
5394                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5395                    fidl_fuchsia_posix::Errno,
5396                >,
5397                fidl::encoding::DefaultFuchsiaResourceDialect,
5398                0x54b505f242280740,
5399            >(_buf?)?;
5400            Ok(_response.map(|x| x.value))
5401        }
5402        self.client.send_query_and_decode::<
5403            fidl::encoding::EmptyPayload,
5404            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5405        >(
5406            (),
5407            0x54b505f242280740,
5408            fidl::encoding::DynamicFlags::empty(),
5409            _decode,
5410        )
5411    }
5412
5413    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5414        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5415        fidl::encoding::DefaultFuchsiaResourceDialect,
5416    >;
5417    fn r#set_ip_receive_type_of_service(
5418        &self,
5419        mut value: bool,
5420    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5421        fn _decode(
5422            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5423        ) -> Result<
5424            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5425            fidl::Error,
5426        > {
5427            let _response = fidl::client::decode_transaction_body::<
5428                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5429                fidl::encoding::DefaultFuchsiaResourceDialect,
5430                0x6c4f6714995f84ef,
5431            >(_buf?)?;
5432            Ok(_response.map(|x| x))
5433        }
5434        self.client.send_query_and_decode::<
5435            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5436            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5437        >(
5438            (value,),
5439            0x6c4f6714995f84ef,
5440            fidl::encoding::DynamicFlags::empty(),
5441            _decode,
5442        )
5443    }
5444
5445    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5446        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5447        fidl::encoding::DefaultFuchsiaResourceDialect,
5448    >;
5449    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5450        fn _decode(
5451            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5452        ) -> Result<
5453            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5454            fidl::Error,
5455        > {
5456            let _response = fidl::client::decode_transaction_body::<
5457                fidl::encoding::ResultType<
5458                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5459                    fidl_fuchsia_posix::Errno,
5460                >,
5461                fidl::encoding::DefaultFuchsiaResourceDialect,
5462                0x4158ba7dc2795960,
5463            >(_buf?)?;
5464            Ok(_response.map(|x| x.value))
5465        }
5466        self.client.send_query_and_decode::<
5467            fidl::encoding::EmptyPayload,
5468            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5469        >(
5470            (),
5471            0x4158ba7dc2795960,
5472            fidl::encoding::DynamicFlags::empty(),
5473            _decode,
5474        )
5475    }
5476
5477    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5478        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5479        fidl::encoding::DefaultFuchsiaResourceDialect,
5480    >;
5481    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5482        fn _decode(
5483            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5484        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5485        {
5486            let _response = fidl::client::decode_transaction_body::<
5487                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5488                fidl::encoding::DefaultFuchsiaResourceDialect,
5489                0x46f15be0ce0ab82b,
5490            >(_buf?)?;
5491            Ok(_response.map(|x| x))
5492        }
5493        self.client.send_query_and_decode::<
5494            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5495            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5496        >(
5497            (value,),
5498            0x46f15be0ce0ab82b,
5499            fidl::encoding::DynamicFlags::empty(),
5500            _decode,
5501        )
5502    }
5503
5504    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5505        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5506        fidl::encoding::DefaultFuchsiaResourceDialect,
5507    >;
5508    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5509        fn _decode(
5510            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5511        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5512        {
5513            let _response = fidl::client::decode_transaction_body::<
5514                fidl::encoding::ResultType<
5515                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5516                    fidl_fuchsia_posix::Errno,
5517                >,
5518                fidl::encoding::DefaultFuchsiaResourceDialect,
5519                0x678ddd5a5dfa2eb5,
5520            >(_buf?)?;
5521            Ok(_response.map(|x| x.value))
5522        }
5523        self.client.send_query_and_decode::<
5524            fidl::encoding::EmptyPayload,
5525            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5526        >(
5527            (),
5528            0x678ddd5a5dfa2eb5,
5529            fidl::encoding::DynamicFlags::empty(),
5530            _decode,
5531        )
5532    }
5533
5534    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5535        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5536        fidl::encoding::DefaultFuchsiaResourceDialect,
5537    >;
5538    fn r#set_ip_multicast_interface(
5539        &self,
5540        mut iface: u64,
5541        mut address: &fidl_fuchsia_net::Ipv4Address,
5542    ) -> Self::SetIpMulticastInterfaceResponseFut {
5543        fn _decode(
5544            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5545        ) -> Result<
5546            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5547            fidl::Error,
5548        > {
5549            let _response = fidl::client::decode_transaction_body::<
5550                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5551                fidl::encoding::DefaultFuchsiaResourceDialect,
5552                0x752fbfa9b12befe,
5553            >(_buf?)?;
5554            Ok(_response.map(|x| x))
5555        }
5556        self.client.send_query_and_decode::<
5557            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5558            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5559        >(
5560            (iface, address,),
5561            0x752fbfa9b12befe,
5562            fidl::encoding::DynamicFlags::empty(),
5563            _decode,
5564        )
5565    }
5566
5567    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5568        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5569        fidl::encoding::DefaultFuchsiaResourceDialect,
5570    >;
5571    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5572        fn _decode(
5573            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5574        ) -> Result<
5575            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5576            fidl::Error,
5577        > {
5578            let _response = fidl::client::decode_transaction_body::<
5579                fidl::encoding::ResultType<
5580                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5581                    fidl_fuchsia_posix::Errno,
5582                >,
5583                fidl::encoding::DefaultFuchsiaResourceDialect,
5584                0x320bd14c4df046c4,
5585            >(_buf?)?;
5586            Ok(_response.map(|x| x.value))
5587        }
5588        self.client.send_query_and_decode::<
5589            fidl::encoding::EmptyPayload,
5590            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5591        >(
5592            (),
5593            0x320bd14c4df046c4,
5594            fidl::encoding::DynamicFlags::empty(),
5595            _decode,
5596        )
5597    }
5598
5599    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5600        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5601        fidl::encoding::DefaultFuchsiaResourceDialect,
5602    >;
5603    fn r#set_ip_multicast_ttl(
5604        &self,
5605        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5606    ) -> Self::SetIpMulticastTtlResponseFut {
5607        fn _decode(
5608            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5609        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5610        {
5611            let _response = fidl::client::decode_transaction_body::<
5612                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5613                fidl::encoding::DefaultFuchsiaResourceDialect,
5614                0x63134d53772916a1,
5615            >(_buf?)?;
5616            Ok(_response.map(|x| x))
5617        }
5618        self.client.send_query_and_decode::<
5619            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5620            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5621        >(
5622            (value,),
5623            0x63134d53772916a1,
5624            fidl::encoding::DynamicFlags::empty(),
5625            _decode,
5626        )
5627    }
5628
5629    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5630        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5631        fidl::encoding::DefaultFuchsiaResourceDialect,
5632    >;
5633    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5634        fn _decode(
5635            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5636        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5637        {
5638            let _response = fidl::client::decode_transaction_body::<
5639                fidl::encoding::ResultType<
5640                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5641                    fidl_fuchsia_posix::Errno,
5642                >,
5643                fidl::encoding::DefaultFuchsiaResourceDialect,
5644                0x4665cd378f39e1a,
5645            >(_buf?)?;
5646            Ok(_response.map(|x| x.value))
5647        }
5648        self.client.send_query_and_decode::<
5649            fidl::encoding::EmptyPayload,
5650            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5651        >(
5652            (),
5653            0x4665cd378f39e1a,
5654            fidl::encoding::DynamicFlags::empty(),
5655            _decode,
5656        )
5657    }
5658
5659    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5660        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5661        fidl::encoding::DefaultFuchsiaResourceDialect,
5662    >;
5663    fn r#set_ip_multicast_loopback(
5664        &self,
5665        mut value: bool,
5666    ) -> Self::SetIpMulticastLoopbackResponseFut {
5667        fn _decode(
5668            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5669        ) -> Result<
5670            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5671            fidl::Error,
5672        > {
5673            let _response = fidl::client::decode_transaction_body::<
5674                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5675                fidl::encoding::DefaultFuchsiaResourceDialect,
5676                0x20c55c11f00943ea,
5677            >(_buf?)?;
5678            Ok(_response.map(|x| x))
5679        }
5680        self.client.send_query_and_decode::<
5681            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5682            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5683        >(
5684            (value,),
5685            0x20c55c11f00943ea,
5686            fidl::encoding::DynamicFlags::empty(),
5687            _decode,
5688        )
5689    }
5690
5691    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5692        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5693        fidl::encoding::DefaultFuchsiaResourceDialect,
5694    >;
5695    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5696        fn _decode(
5697            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5698        ) -> Result<
5699            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5700            fidl::Error,
5701        > {
5702            let _response = fidl::client::decode_transaction_body::<
5703                fidl::encoding::ResultType<
5704                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5705                    fidl_fuchsia_posix::Errno,
5706                >,
5707                fidl::encoding::DefaultFuchsiaResourceDialect,
5708                0x3b6b26ff558298f2,
5709            >(_buf?)?;
5710            Ok(_response.map(|x| x.value))
5711        }
5712        self.client.send_query_and_decode::<
5713            fidl::encoding::EmptyPayload,
5714            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5715        >(
5716            (),
5717            0x3b6b26ff558298f2,
5718            fidl::encoding::DynamicFlags::empty(),
5719            _decode,
5720        )
5721    }
5722
5723    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5724        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5725        fidl::encoding::DefaultFuchsiaResourceDialect,
5726    >;
5727    fn r#add_ip_membership(
5728        &self,
5729        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5730    ) -> Self::AddIpMembershipResponseFut {
5731        fn _decode(
5732            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5733        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5734        {
5735            let _response = fidl::client::decode_transaction_body::<
5736                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5737                fidl::encoding::DefaultFuchsiaResourceDialect,
5738                0x76bc7df115a3b4d0,
5739            >(_buf?)?;
5740            Ok(_response.map(|x| x))
5741        }
5742        self.client.send_query_and_decode::<
5743            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5744            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5745        >(
5746            (membership,),
5747            0x76bc7df115a3b4d0,
5748            fidl::encoding::DynamicFlags::empty(),
5749            _decode,
5750        )
5751    }
5752
5753    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5754        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5755        fidl::encoding::DefaultFuchsiaResourceDialect,
5756    >;
5757    fn r#drop_ip_membership(
5758        &self,
5759        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5760    ) -> Self::DropIpMembershipResponseFut {
5761        fn _decode(
5762            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5763        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5764        {
5765            let _response = fidl::client::decode_transaction_body::<
5766                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5767                fidl::encoding::DefaultFuchsiaResourceDialect,
5768                0x2888f3099188d03,
5769            >(_buf?)?;
5770            Ok(_response.map(|x| x))
5771        }
5772        self.client.send_query_and_decode::<
5773            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5774            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5775        >(
5776            (membership,),
5777            0x2888f3099188d03,
5778            fidl::encoding::DynamicFlags::empty(),
5779            _decode,
5780        )
5781    }
5782
5783    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5784        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5785        fidl::encoding::DefaultFuchsiaResourceDialect,
5786    >;
5787    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5788        fn _decode(
5789            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5790        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5791        {
5792            let _response = fidl::client::decode_transaction_body::<
5793                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5794                fidl::encoding::DefaultFuchsiaResourceDialect,
5795                0x1ae532b0c066e3a0,
5796            >(_buf?)?;
5797            Ok(_response.map(|x| x))
5798        }
5799        self.client.send_query_and_decode::<
5800            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5801            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5802        >(
5803            (value,),
5804            0x1ae532b0c066e3a0,
5805            fidl::encoding::DynamicFlags::empty(),
5806            _decode,
5807        )
5808    }
5809
5810    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5811        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5812        fidl::encoding::DefaultFuchsiaResourceDialect,
5813    >;
5814    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5815        fn _decode(
5816            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5817        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5818        {
5819            let _response = fidl::client::decode_transaction_body::<
5820                fidl::encoding::ResultType<
5821                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5822                    fidl_fuchsia_posix::Errno,
5823                >,
5824                fidl::encoding::DefaultFuchsiaResourceDialect,
5825                0x51d43695962ebfb5,
5826            >(_buf?)?;
5827            Ok(_response.map(|x| x.value))
5828        }
5829        self.client.send_query_and_decode::<
5830            fidl::encoding::EmptyPayload,
5831            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5832        >(
5833            (),
5834            0x51d43695962ebfb5,
5835            fidl::encoding::DynamicFlags::empty(),
5836            _decode,
5837        )
5838    }
5839
5840    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5841        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5842        fidl::encoding::DefaultFuchsiaResourceDialect,
5843    >;
5844    fn r#set_ip_receive_original_destination_address(
5845        &self,
5846        mut value: bool,
5847    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5848        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5849            let _response = fidl::client::decode_transaction_body::<
5850                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5851                fidl::encoding::DefaultFuchsiaResourceDialect,
5852                0x4722b4ce52f7840,
5853            >(_buf?)?;
5854            Ok(_response.map(|x| x))
5855        }
5856        self.client.send_query_and_decode::<
5857            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5858            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5859        >(
5860            (value,),
5861            0x4722b4ce52f7840,
5862            fidl::encoding::DynamicFlags::empty(),
5863            _decode,
5864        )
5865    }
5866
5867    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5868        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5869        fidl::encoding::DefaultFuchsiaResourceDialect,
5870    >;
5871    fn r#get_ip_receive_original_destination_address(
5872        &self,
5873    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
5874        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5875            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
5876            Ok(_response.map(|x| x.value))
5877        }
5878        self.client.send_query_and_decode::<
5879            fidl::encoding::EmptyPayload,
5880            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5881        >(
5882            (),
5883            0x2a0e7dc5d6bfdfe9,
5884            fidl::encoding::DynamicFlags::empty(),
5885            _decode,
5886        )
5887    }
5888
5889    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5890        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5891        fidl::encoding::DefaultFuchsiaResourceDialect,
5892    >;
5893    fn r#add_ipv6_membership(
5894        &self,
5895        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5896    ) -> Self::AddIpv6MembershipResponseFut {
5897        fn _decode(
5898            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5899        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
5900        {
5901            let _response = fidl::client::decode_transaction_body::<
5902                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5903                fidl::encoding::DefaultFuchsiaResourceDialect,
5904                0x7c94727acb4ea4b3,
5905            >(_buf?)?;
5906            Ok(_response.map(|x| x))
5907        }
5908        self.client.send_query_and_decode::<
5909            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
5910            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5911        >(
5912            (membership,),
5913            0x7c94727acb4ea4b3,
5914            fidl::encoding::DynamicFlags::empty(),
5915            _decode,
5916        )
5917    }
5918
5919    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5920        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5921        fidl::encoding::DefaultFuchsiaResourceDialect,
5922    >;
5923    fn r#drop_ipv6_membership(
5924        &self,
5925        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5926    ) -> Self::DropIpv6MembershipResponseFut {
5927        fn _decode(
5928            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5929        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
5930        {
5931            let _response = fidl::client::decode_transaction_body::<
5932                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5933                fidl::encoding::DefaultFuchsiaResourceDialect,
5934                0x42104c70ccaba304,
5935            >(_buf?)?;
5936            Ok(_response.map(|x| x))
5937        }
5938        self.client.send_query_and_decode::<
5939            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
5940            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5941        >(
5942            (membership,),
5943            0x42104c70ccaba304,
5944            fidl::encoding::DynamicFlags::empty(),
5945            _decode,
5946        )
5947    }
5948
5949    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5950        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5951        fidl::encoding::DefaultFuchsiaResourceDialect,
5952    >;
5953    fn r#set_ipv6_multicast_interface(
5954        &self,
5955        mut value: u64,
5956    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
5957        fn _decode(
5958            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5959        ) -> Result<
5960            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5961            fidl::Error,
5962        > {
5963            let _response = fidl::client::decode_transaction_body::<
5964                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5965                fidl::encoding::DefaultFuchsiaResourceDialect,
5966                0x135f76db3774ab3b,
5967            >(_buf?)?;
5968            Ok(_response.map(|x| x))
5969        }
5970        self.client.send_query_and_decode::<
5971            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
5972            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5973        >(
5974            (value,),
5975            0x135f76db3774ab3b,
5976            fidl::encoding::DynamicFlags::empty(),
5977            _decode,
5978        )
5979    }
5980
5981    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5982        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5983        fidl::encoding::DefaultFuchsiaResourceDialect,
5984    >;
5985    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
5986        fn _decode(
5987            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5988        ) -> Result<
5989            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5990            fidl::Error,
5991        > {
5992            let _response = fidl::client::decode_transaction_body::<
5993                fidl::encoding::ResultType<
5994                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
5995                    fidl_fuchsia_posix::Errno,
5996                >,
5997                fidl::encoding::DefaultFuchsiaResourceDialect,
5998                0x1f26fcdd348f1882,
5999            >(_buf?)?;
6000            Ok(_response.map(|x| x.value))
6001        }
6002        self.client.send_query_and_decode::<
6003            fidl::encoding::EmptyPayload,
6004            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6005        >(
6006            (),
6007            0x1f26fcdd348f1882,
6008            fidl::encoding::DynamicFlags::empty(),
6009            _decode,
6010        )
6011    }
6012
6013    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6014        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6015        fidl::encoding::DefaultFuchsiaResourceDialect,
6016    >;
6017    fn r#set_ipv6_unicast_hops(
6018        &self,
6019        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6020    ) -> Self::SetIpv6UnicastHopsResponseFut {
6021        fn _decode(
6022            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6023        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
6024        {
6025            let _response = fidl::client::decode_transaction_body::<
6026                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6027                fidl::encoding::DefaultFuchsiaResourceDialect,
6028                0x157d51e98f462859,
6029            >(_buf?)?;
6030            Ok(_response.map(|x| x))
6031        }
6032        self.client.send_query_and_decode::<
6033            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
6034            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6035        >(
6036            (value,),
6037            0x157d51e98f462859,
6038            fidl::encoding::DynamicFlags::empty(),
6039            _decode,
6040        )
6041    }
6042
6043    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6044        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6045        fidl::encoding::DefaultFuchsiaResourceDialect,
6046    >;
6047    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
6048        fn _decode(
6049            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6050        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
6051        {
6052            let _response = fidl::client::decode_transaction_body::<
6053                fidl::encoding::ResultType<
6054                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
6055                    fidl_fuchsia_posix::Errno,
6056                >,
6057                fidl::encoding::DefaultFuchsiaResourceDialect,
6058                0x21f4641cad8bd8d2,
6059            >(_buf?)?;
6060            Ok(_response.map(|x| x.value))
6061        }
6062        self.client.send_query_and_decode::<
6063            fidl::encoding::EmptyPayload,
6064            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6065        >(
6066            (),
6067            0x21f4641cad8bd8d2,
6068            fidl::encoding::DynamicFlags::empty(),
6069            _decode,
6070        )
6071    }
6072
6073    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6074        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6075        fidl::encoding::DefaultFuchsiaResourceDialect,
6076    >;
6077    fn r#set_ipv6_receive_hop_limit(
6078        &self,
6079        mut value: bool,
6080    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6081        fn _decode(
6082            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6083        ) -> Result<
6084            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6085            fidl::Error,
6086        > {
6087            let _response = fidl::client::decode_transaction_body::<
6088                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6089                fidl::encoding::DefaultFuchsiaResourceDialect,
6090                0x5c24808ed2e84a1e,
6091            >(_buf?)?;
6092            Ok(_response.map(|x| x))
6093        }
6094        self.client.send_query_and_decode::<
6095            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6096            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6097        >(
6098            (value,),
6099            0x5c24808ed2e84a1e,
6100            fidl::encoding::DynamicFlags::empty(),
6101            _decode,
6102        )
6103    }
6104
6105    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6106        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6107        fidl::encoding::DefaultFuchsiaResourceDialect,
6108    >;
6109    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6110        fn _decode(
6111            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6112        ) -> Result<
6113            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6114            fidl::Error,
6115        > {
6116            let _response = fidl::client::decode_transaction_body::<
6117                fidl::encoding::ResultType<
6118                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6119                    fidl_fuchsia_posix::Errno,
6120                >,
6121                fidl::encoding::DefaultFuchsiaResourceDialect,
6122                0x341e06689885b4c0,
6123            >(_buf?)?;
6124            Ok(_response.map(|x| x.value))
6125        }
6126        self.client.send_query_and_decode::<
6127            fidl::encoding::EmptyPayload,
6128            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6129        >(
6130            (),
6131            0x341e06689885b4c0,
6132            fidl::encoding::DynamicFlags::empty(),
6133            _decode,
6134        )
6135    }
6136
6137    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6138        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6139        fidl::encoding::DefaultFuchsiaResourceDialect,
6140    >;
6141    fn r#set_ipv6_multicast_hops(
6142        &self,
6143        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6144    ) -> Self::SetIpv6MulticastHopsResponseFut {
6145        fn _decode(
6146            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6147        ) -> Result<
6148            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6149            fidl::Error,
6150        > {
6151            let _response = fidl::client::decode_transaction_body::<
6152                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6153                fidl::encoding::DefaultFuchsiaResourceDialect,
6154                0x25b9cd4d181f82c1,
6155            >(_buf?)?;
6156            Ok(_response.map(|x| x))
6157        }
6158        self.client.send_query_and_decode::<
6159            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6160            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6161        >(
6162            (value,),
6163            0x25b9cd4d181f82c1,
6164            fidl::encoding::DynamicFlags::empty(),
6165            _decode,
6166        )
6167    }
6168
6169    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6170        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6171        fidl::encoding::DefaultFuchsiaResourceDialect,
6172    >;
6173    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6174        fn _decode(
6175            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6176        ) -> Result<
6177            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6178            fidl::Error,
6179        > {
6180            let _response = fidl::client::decode_transaction_body::<
6181                fidl::encoding::ResultType<
6182                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6183                    fidl_fuchsia_posix::Errno,
6184                >,
6185                fidl::encoding::DefaultFuchsiaResourceDialect,
6186                0x52916948a365012a,
6187            >(_buf?)?;
6188            Ok(_response.map(|x| x.value))
6189        }
6190        self.client.send_query_and_decode::<
6191            fidl::encoding::EmptyPayload,
6192            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6193        >(
6194            (),
6195            0x52916948a365012a,
6196            fidl::encoding::DynamicFlags::empty(),
6197            _decode,
6198        )
6199    }
6200
6201    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6202        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6203        fidl::encoding::DefaultFuchsiaResourceDialect,
6204    >;
6205    fn r#set_ipv6_multicast_loopback(
6206        &self,
6207        mut value: bool,
6208    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6209        fn _decode(
6210            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6211        ) -> Result<
6212            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6213            fidl::Error,
6214        > {
6215            let _response = fidl::client::decode_transaction_body::<
6216                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6217                fidl::encoding::DefaultFuchsiaResourceDialect,
6218                0x55701c409ff41b40,
6219            >(_buf?)?;
6220            Ok(_response.map(|x| x))
6221        }
6222        self.client.send_query_and_decode::<
6223            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6224            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6225        >(
6226            (value,),
6227            0x55701c409ff41b40,
6228            fidl::encoding::DynamicFlags::empty(),
6229            _decode,
6230        )
6231    }
6232
6233    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6234        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6235        fidl::encoding::DefaultFuchsiaResourceDialect,
6236    >;
6237    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6238        fn _decode(
6239            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6240        ) -> Result<
6241            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6242            fidl::Error,
6243        > {
6244            let _response = fidl::client::decode_transaction_body::<
6245                fidl::encoding::ResultType<
6246                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6247                    fidl_fuchsia_posix::Errno,
6248                >,
6249                fidl::encoding::DefaultFuchsiaResourceDialect,
6250                0x4415b701fde319c3,
6251            >(_buf?)?;
6252            Ok(_response.map(|x| x.value))
6253        }
6254        self.client.send_query_and_decode::<
6255            fidl::encoding::EmptyPayload,
6256            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6257        >(
6258            (),
6259            0x4415b701fde319c3,
6260            fidl::encoding::DynamicFlags::empty(),
6261            _decode,
6262        )
6263    }
6264
6265    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6266        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6267        fidl::encoding::DefaultFuchsiaResourceDialect,
6268    >;
6269    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6270        fn _decode(
6271            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6272        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error>
6273        {
6274            let _response = fidl::client::decode_transaction_body::<
6275                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6276                fidl::encoding::DefaultFuchsiaResourceDialect,
6277                0x4873f1364758cbba,
6278            >(_buf?)?;
6279            Ok(_response.map(|x| x))
6280        }
6281        self.client.send_query_and_decode::<
6282            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6283            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6284        >(
6285            (value,),
6286            0x4873f1364758cbba,
6287            fidl::encoding::DynamicFlags::empty(),
6288            _decode,
6289        )
6290    }
6291
6292    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6293        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6294        fidl::encoding::DefaultFuchsiaResourceDialect,
6295    >;
6296    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6297        fn _decode(
6298            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6299        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6300        {
6301            let _response = fidl::client::decode_transaction_body::<
6302                fidl::encoding::ResultType<
6303                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6304                    fidl_fuchsia_posix::Errno,
6305                >,
6306                fidl::encoding::DefaultFuchsiaResourceDialect,
6307                0x4aa3340a1a26b89c,
6308            >(_buf?)?;
6309            Ok(_response.map(|x| x.value))
6310        }
6311        self.client.send_query_and_decode::<
6312            fidl::encoding::EmptyPayload,
6313            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6314        >(
6315            (),
6316            0x4aa3340a1a26b89c,
6317            fidl::encoding::DynamicFlags::empty(),
6318            _decode,
6319        )
6320    }
6321
6322    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6323        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6324        fidl::encoding::DefaultFuchsiaResourceDialect,
6325    >;
6326    fn r#set_ipv6_receive_traffic_class(
6327        &self,
6328        mut value: bool,
6329    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6330        fn _decode(
6331            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6332        ) -> Result<
6333            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6334            fidl::Error,
6335        > {
6336            let _response = fidl::client::decode_transaction_body::<
6337                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6338                fidl::encoding::DefaultFuchsiaResourceDialect,
6339                0x58f07c8788d099a0,
6340            >(_buf?)?;
6341            Ok(_response.map(|x| x))
6342        }
6343        self.client.send_query_and_decode::<
6344            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6345            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6346        >(
6347            (value,),
6348            0x58f07c8788d099a0,
6349            fidl::encoding::DynamicFlags::empty(),
6350            _decode,
6351        )
6352    }
6353
6354    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6355        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6356        fidl::encoding::DefaultFuchsiaResourceDialect,
6357    >;
6358    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6359        fn _decode(
6360            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6361        ) -> Result<
6362            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6363            fidl::Error,
6364        > {
6365            let _response = fidl::client::decode_transaction_body::<
6366                fidl::encoding::ResultType<
6367                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6368                    fidl_fuchsia_posix::Errno,
6369                >,
6370                fidl::encoding::DefaultFuchsiaResourceDialect,
6371                0x2e334df1da553ffa,
6372            >(_buf?)?;
6373            Ok(_response.map(|x| x.value))
6374        }
6375        self.client.send_query_and_decode::<
6376            fidl::encoding::EmptyPayload,
6377            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6378        >(
6379            (),
6380            0x2e334df1da553ffa,
6381            fidl::encoding::DynamicFlags::empty(),
6382            _decode,
6383        )
6384    }
6385
6386    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6387        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6388        fidl::encoding::DefaultFuchsiaResourceDialect,
6389    >;
6390    fn r#set_ipv6_traffic_class(
6391        &self,
6392        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6393    ) -> Self::SetIpv6TrafficClassResponseFut {
6394        fn _decode(
6395            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6396        ) -> Result<
6397            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6398            fidl::Error,
6399        > {
6400            let _response = fidl::client::decode_transaction_body::<
6401                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6402                fidl::encoding::DefaultFuchsiaResourceDialect,
6403                0x6af077800c5a0b4f,
6404            >(_buf?)?;
6405            Ok(_response.map(|x| x))
6406        }
6407        self.client.send_query_and_decode::<
6408            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6409            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6410        >(
6411            (value,),
6412            0x6af077800c5a0b4f,
6413            fidl::encoding::DynamicFlags::empty(),
6414            _decode,
6415        )
6416    }
6417
6418    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6419        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6420        fidl::encoding::DefaultFuchsiaResourceDialect,
6421    >;
6422    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6423        fn _decode(
6424            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6425        ) -> Result<
6426            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6427            fidl::Error,
6428        > {
6429            let _response = fidl::client::decode_transaction_body::<
6430                fidl::encoding::ResultType<
6431                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6432                    fidl_fuchsia_posix::Errno,
6433                >,
6434                fidl::encoding::DefaultFuchsiaResourceDialect,
6435                0x6baf6eed8fc2f04,
6436            >(_buf?)?;
6437            Ok(_response.map(|x| x.value))
6438        }
6439        self.client.send_query_and_decode::<
6440            fidl::encoding::EmptyPayload,
6441            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6442        >(
6443            (),
6444            0x6baf6eed8fc2f04,
6445            fidl::encoding::DynamicFlags::empty(),
6446            _decode,
6447        )
6448    }
6449
6450    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6451        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6452        fidl::encoding::DefaultFuchsiaResourceDialect,
6453    >;
6454    fn r#set_ipv6_receive_packet_info(
6455        &self,
6456        mut value: bool,
6457    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6458        fn _decode(
6459            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6460        ) -> Result<
6461            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6462            fidl::Error,
6463        > {
6464            let _response = fidl::client::decode_transaction_body::<
6465                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6466                fidl::encoding::DefaultFuchsiaResourceDialect,
6467                0x19259775b1a92768,
6468            >(_buf?)?;
6469            Ok(_response.map(|x| x))
6470        }
6471        self.client.send_query_and_decode::<
6472            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6473            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6474        >(
6475            (value,),
6476            0x19259775b1a92768,
6477            fidl::encoding::DynamicFlags::empty(),
6478            _decode,
6479        )
6480    }
6481
6482    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6483        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6484        fidl::encoding::DefaultFuchsiaResourceDialect,
6485    >;
6486    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6487        fn _decode(
6488            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6489        ) -> Result<
6490            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6491            fidl::Error,
6492        > {
6493            let _response = fidl::client::decode_transaction_body::<
6494                fidl::encoding::ResultType<
6495                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6496                    fidl_fuchsia_posix::Errno,
6497                >,
6498                fidl::encoding::DefaultFuchsiaResourceDialect,
6499                0x7acd4a2775baec75,
6500            >(_buf?)?;
6501            Ok(_response.map(|x| x.value))
6502        }
6503        self.client.send_query_and_decode::<
6504            fidl::encoding::EmptyPayload,
6505            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6506        >(
6507            (),
6508            0x7acd4a2775baec75,
6509            fidl::encoding::DynamicFlags::empty(),
6510            _decode,
6511        )
6512    }
6513
6514    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6515        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6516        fidl::encoding::DefaultFuchsiaResourceDialect,
6517    >;
6518    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6519        fn _decode(
6520            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6521        ) -> Result<
6522            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6523            fidl::Error,
6524        > {
6525            let _response = fidl::client::decode_transaction_body::<
6526                fidl::encoding::ResultType<
6527                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6528                    fidl_fuchsia_posix::Errno,
6529                >,
6530                fidl::encoding::DefaultFuchsiaResourceDialect,
6531                0x38bf28f0dafdbac0,
6532            >(_buf?)?;
6533            Ok(_response.map(|x| x.value))
6534        }
6535        self.client.send_query_and_decode::<
6536            fidl::encoding::EmptyPayload,
6537            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6538        >(
6539            (),
6540            0x38bf28f0dafdbac0,
6541            fidl::encoding::DynamicFlags::empty(),
6542            _decode,
6543        )
6544    }
6545
6546    type DescribeResponseFut = fidl::client::QueryResponseFut<
6547        SocketDescribeResponse,
6548        fidl::encoding::DefaultFuchsiaResourceDialect,
6549    >;
6550    fn r#describe(&self) -> Self::DescribeResponseFut {
6551        fn _decode(
6552            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6553        ) -> Result<SocketDescribeResponse, fidl::Error> {
6554            let _response = fidl::client::decode_transaction_body::<
6555                SocketDescribeResponse,
6556                fidl::encoding::DefaultFuchsiaResourceDialect,
6557                0x335706eccf54a135,
6558            >(_buf?)?;
6559            Ok(_response)
6560        }
6561        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6562            (),
6563            0x335706eccf54a135,
6564            fidl::encoding::DynamicFlags::empty(),
6565            _decode,
6566        )
6567    }
6568
6569    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6570        SocketRecvMsgResult,
6571        fidl::encoding::DefaultFuchsiaResourceDialect,
6572    >;
6573    fn r#recv_msg(
6574        &self,
6575        mut want_addr: bool,
6576        mut data_len: u32,
6577        mut want_control: bool,
6578        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6579    ) -> Self::RecvMsgResponseFut {
6580        fn _decode(
6581            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6582        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6583            let _response = fidl::client::decode_transaction_body::<
6584                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6585                fidl::encoding::DefaultFuchsiaResourceDialect,
6586                0x1dfb695351d3aa1d,
6587            >(_buf?)?;
6588            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6589        }
6590        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6591            (want_addr, data_len, want_control, flags),
6592            0x1dfb695351d3aa1d,
6593            fidl::encoding::DynamicFlags::empty(),
6594            _decode,
6595        )
6596    }
6597
6598    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6599        SocketSendMsgResult,
6600        fidl::encoding::DefaultFuchsiaResourceDialect,
6601    >;
6602    fn r#send_msg(
6603        &self,
6604        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6605        mut data: &[u8],
6606        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6607        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6608    ) -> Self::SendMsgResponseFut {
6609        fn _decode(
6610            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6611        ) -> Result<SocketSendMsgResult, fidl::Error> {
6612            let _response = fidl::client::decode_transaction_body::<
6613                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6614                fidl::encoding::DefaultFuchsiaResourceDialect,
6615                0x2cf1eac9a7fc8958,
6616            >(_buf?)?;
6617            Ok(_response.map(|x| x))
6618        }
6619        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6620            (addr, data, control, flags),
6621            0x2cf1eac9a7fc8958,
6622            fidl::encoding::DynamicFlags::empty(),
6623            _decode,
6624        )
6625    }
6626
6627    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6628        SocketGetInfoResult,
6629        fidl::encoding::DefaultFuchsiaResourceDialect,
6630    >;
6631    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6632        fn _decode(
6633            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6634        ) -> Result<SocketGetInfoResult, fidl::Error> {
6635            let _response = fidl::client::decode_transaction_body::<
6636                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6637                fidl::encoding::DefaultFuchsiaResourceDialect,
6638                0x39676f75aec339ba,
6639            >(_buf?)?;
6640            Ok(_response.map(|x| (x.domain, x.proto)))
6641        }
6642        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6643            (),
6644            0x39676f75aec339ba,
6645            fidl::encoding::DynamicFlags::empty(),
6646            _decode,
6647        )
6648    }
6649
6650    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6651        SocketSetIpHeaderIncludedResult,
6652        fidl::encoding::DefaultFuchsiaResourceDialect,
6653    >;
6654    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6655        fn _decode(
6656            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6657        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6658            let _response = fidl::client::decode_transaction_body::<
6659                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6660                fidl::encoding::DefaultFuchsiaResourceDialect,
6661                0x5d06a606d95e8f3,
6662            >(_buf?)?;
6663            Ok(_response.map(|x| x))
6664        }
6665        self.client.send_query_and_decode::<
6666            SocketSetIpHeaderIncludedRequest,
6667            SocketSetIpHeaderIncludedResult,
6668        >(
6669            (value,),
6670            0x5d06a606d95e8f3,
6671            fidl::encoding::DynamicFlags::empty(),
6672            _decode,
6673        )
6674    }
6675
6676    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6677        SocketGetIpHeaderIncludedResult,
6678        fidl::encoding::DefaultFuchsiaResourceDialect,
6679    >;
6680    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6681        fn _decode(
6682            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6683        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6684            let _response = fidl::client::decode_transaction_body::<
6685                fidl::encoding::ResultType<
6686                    SocketGetIpHeaderIncludedResponse,
6687                    fidl_fuchsia_posix::Errno,
6688                >,
6689                fidl::encoding::DefaultFuchsiaResourceDialect,
6690                0x76125ad1f4d175f6,
6691            >(_buf?)?;
6692            Ok(_response.map(|x| x.value))
6693        }
6694        self.client
6695            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6696                (),
6697                0x76125ad1f4d175f6,
6698                fidl::encoding::DynamicFlags::empty(),
6699                _decode,
6700            )
6701    }
6702
6703    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6704        SocketSetIcmpv6FilterResult,
6705        fidl::encoding::DefaultFuchsiaResourceDialect,
6706    >;
6707    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6708        fn _decode(
6709            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6710        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6711            let _response = fidl::client::decode_transaction_body::<
6712                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6713                fidl::encoding::DefaultFuchsiaResourceDialect,
6714                0x4ebea92a43ae68a9,
6715            >(_buf?)?;
6716            Ok(_response.map(|x| x))
6717        }
6718        self.client
6719            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6720                (filter,),
6721                0x4ebea92a43ae68a9,
6722                fidl::encoding::DynamicFlags::empty(),
6723                _decode,
6724            )
6725    }
6726
6727    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6728        SocketGetIcmpv6FilterResult,
6729        fidl::encoding::DefaultFuchsiaResourceDialect,
6730    >;
6731    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6732        fn _decode(
6733            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6734        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6735            let _response = fidl::client::decode_transaction_body::<
6736                fidl::encoding::ResultType<
6737                    SocketGetIcmpv6FilterResponse,
6738                    fidl_fuchsia_posix::Errno,
6739                >,
6740                fidl::encoding::DefaultFuchsiaResourceDialect,
6741                0x43bd4f3bc0970ace,
6742            >(_buf?)?;
6743            Ok(_response.map(|x| x.filter))
6744        }
6745        self.client
6746            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6747                (),
6748                0x43bd4f3bc0970ace,
6749                fidl::encoding::DynamicFlags::empty(),
6750                _decode,
6751            )
6752    }
6753
6754    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6755        SocketSetIpv6ChecksumResult,
6756        fidl::encoding::DefaultFuchsiaResourceDialect,
6757    >;
6758    fn r#set_ipv6_checksum(
6759        &self,
6760        mut config: &Ipv6ChecksumConfiguration,
6761    ) -> Self::SetIpv6ChecksumResponseFut {
6762        fn _decode(
6763            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6764        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6765            let _response = fidl::client::decode_transaction_body::<
6766                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6767                fidl::encoding::DefaultFuchsiaResourceDialect,
6768                0x18b7809577199cb4,
6769            >(_buf?)?;
6770            Ok(_response.map(|x| x))
6771        }
6772        self.client
6773            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6774                (config,),
6775                0x18b7809577199cb4,
6776                fidl::encoding::DynamicFlags::empty(),
6777                _decode,
6778            )
6779    }
6780
6781    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6782        SocketGetIpv6ChecksumResult,
6783        fidl::encoding::DefaultFuchsiaResourceDialect,
6784    >;
6785    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6786        fn _decode(
6787            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6788        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6789            let _response = fidl::client::decode_transaction_body::<
6790                fidl::encoding::ResultType<
6791                    SocketGetIpv6ChecksumResponse,
6792                    fidl_fuchsia_posix::Errno,
6793                >,
6794                fidl::encoding::DefaultFuchsiaResourceDialect,
6795                0x1847bf5b2d263dd,
6796            >(_buf?)?;
6797            Ok(_response.map(|x| x.config))
6798        }
6799        self.client
6800            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6801                (),
6802                0x1847bf5b2d263dd,
6803                fidl::encoding::DynamicFlags::empty(),
6804                _decode,
6805            )
6806    }
6807}
6808
6809pub struct SocketEventStream {
6810    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6811}
6812
6813impl std::marker::Unpin for SocketEventStream {}
6814
6815impl futures::stream::FusedStream for SocketEventStream {
6816    fn is_terminated(&self) -> bool {
6817        self.event_receiver.is_terminated()
6818    }
6819}
6820
6821impl futures::Stream for SocketEventStream {
6822    type Item = Result<SocketEvent, fidl::Error>;
6823
6824    fn poll_next(
6825        mut self: std::pin::Pin<&mut Self>,
6826        cx: &mut std::task::Context<'_>,
6827    ) -> std::task::Poll<Option<Self::Item>> {
6828        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6829            &mut self.event_receiver,
6830            cx
6831        )?) {
6832            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6833            None => std::task::Poll::Ready(None),
6834        }
6835    }
6836}
6837
6838#[derive(Debug)]
6839pub enum SocketEvent {}
6840
6841impl SocketEvent {
6842    /// Decodes a message buffer as a [`SocketEvent`].
6843    fn decode(
6844        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6845    ) -> Result<SocketEvent, fidl::Error> {
6846        let (bytes, _handles) = buf.split_mut();
6847        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6848        debug_assert_eq!(tx_header.tx_id, 0);
6849        match tx_header.ordinal {
6850            _ => Err(fidl::Error::UnknownOrdinal {
6851                ordinal: tx_header.ordinal,
6852                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6853            }),
6854        }
6855    }
6856}
6857
6858/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6859pub struct SocketRequestStream {
6860    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6861    is_terminated: bool,
6862}
6863
6864impl std::marker::Unpin for SocketRequestStream {}
6865
6866impl futures::stream::FusedStream for SocketRequestStream {
6867    fn is_terminated(&self) -> bool {
6868        self.is_terminated
6869    }
6870}
6871
6872impl fidl::endpoints::RequestStream for SocketRequestStream {
6873    type Protocol = SocketMarker;
6874    type ControlHandle = SocketControlHandle;
6875
6876    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6877        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6878    }
6879
6880    fn control_handle(&self) -> Self::ControlHandle {
6881        SocketControlHandle { inner: self.inner.clone() }
6882    }
6883
6884    fn into_inner(
6885        self,
6886    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
6887    {
6888        (self.inner, self.is_terminated)
6889    }
6890
6891    fn from_inner(
6892        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6893        is_terminated: bool,
6894    ) -> Self {
6895        Self { inner, is_terminated }
6896    }
6897}
6898
6899impl futures::Stream for SocketRequestStream {
6900    type Item = Result<SocketRequest, fidl::Error>;
6901
6902    fn poll_next(
6903        mut self: std::pin::Pin<&mut Self>,
6904        cx: &mut std::task::Context<'_>,
6905    ) -> std::task::Poll<Option<Self::Item>> {
6906        let this = &mut *self;
6907        if this.inner.check_shutdown(cx) {
6908            this.is_terminated = true;
6909            return std::task::Poll::Ready(None);
6910        }
6911        if this.is_terminated {
6912            panic!("polled SocketRequestStream after completion");
6913        }
6914        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
6915            |bytes, handles| {
6916                match this.inner.channel().read_etc(cx, bytes, handles) {
6917                    std::task::Poll::Ready(Ok(())) => {}
6918                    std::task::Poll::Pending => return std::task::Poll::Pending,
6919                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
6920                        this.is_terminated = true;
6921                        return std::task::Poll::Ready(None);
6922                    }
6923                    std::task::Poll::Ready(Err(e)) => {
6924                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
6925                            e.into(),
6926                        ))));
6927                    }
6928                }
6929
6930                // A message has been received from the channel
6931                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6932
6933                std::task::Poll::Ready(Some(match header.ordinal {
6934                    0x20d8a7aba2168a79 => {
6935                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6936                        let mut req = fidl::new_empty!(
6937                            fidl_fuchsia_unknown::CloneableCloneRequest,
6938                            fidl::encoding::DefaultFuchsiaResourceDialect
6939                        );
6940                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
6941                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6942                        Ok(SocketRequest::Clone { request: req.request, control_handle })
6943                    }
6944                    0x5ac5d459ad7f657e => {
6945                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6946                        let mut req = fidl::new_empty!(
6947                            fidl::encoding::EmptyPayload,
6948                            fidl::encoding::DefaultFuchsiaResourceDialect
6949                        );
6950                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6951                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6952                        Ok(SocketRequest::Close {
6953                            responder: SocketCloseResponder {
6954                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6955                                tx_id: header.tx_id,
6956                            },
6957                        })
6958                    }
6959                    0x2658edee9decfc06 => {
6960                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6961                        let mut req = fidl::new_empty!(
6962                            fidl::encoding::EmptyPayload,
6963                            fidl::encoding::DefaultFuchsiaResourceDialect
6964                        );
6965                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6966                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6967                        Ok(SocketRequest::Query {
6968                            responder: SocketQueryResponder {
6969                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6970                                tx_id: header.tx_id,
6971                            },
6972                        })
6973                    }
6974                    0x1fd74ee8b9a4a876 => {
6975                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6976                        let mut req = fidl::new_empty!(
6977                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
6978                            fidl::encoding::DefaultFuchsiaResourceDialect
6979                        );
6980                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
6981                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6982                        Ok(SocketRequest::SetReuseAddress {
6983                            value: req.value,
6984
6985                            responder: SocketSetReuseAddressResponder {
6986                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6987                                tx_id: header.tx_id,
6988                            },
6989                        })
6990                    }
6991                    0x67b7206b8d1bc0a5 => {
6992                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6993                        let mut req = fidl::new_empty!(
6994                            fidl::encoding::EmptyPayload,
6995                            fidl::encoding::DefaultFuchsiaResourceDialect
6996                        );
6997                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6998                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6999                        Ok(SocketRequest::GetReuseAddress {
7000                            responder: SocketGetReuseAddressResponder {
7001                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7002                                tx_id: header.tx_id,
7003                            },
7004                        })
7005                    }
7006                    0x5aad39b33e5f6ebb => {
7007                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7008                        let mut req = fidl::new_empty!(
7009                            fidl::encoding::EmptyPayload,
7010                            fidl::encoding::DefaultFuchsiaResourceDialect
7011                        );
7012                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7013                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7014                        Ok(SocketRequest::GetError {
7015                            responder: SocketGetErrorResponder {
7016                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7017                                tx_id: header.tx_id,
7018                            },
7019                        })
7020                    }
7021                    0x6023e081ce3cd947 => {
7022                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7023                        let mut req = fidl::new_empty!(
7024                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
7025                            fidl::encoding::DefaultFuchsiaResourceDialect
7026                        );
7027                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
7028                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7029                        Ok(SocketRequest::SetBroadcast {
7030                            value: req.value,
7031
7032                            responder: SocketSetBroadcastResponder {
7033                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7034                                tx_id: header.tx_id,
7035                            },
7036                        })
7037                    }
7038                    0x68796fc556f9780d => {
7039                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7040                        let mut req = fidl::new_empty!(
7041                            fidl::encoding::EmptyPayload,
7042                            fidl::encoding::DefaultFuchsiaResourceDialect
7043                        );
7044                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7045                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7046                        Ok(SocketRequest::GetBroadcast {
7047                            responder: SocketGetBroadcastResponder {
7048                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7049                                tx_id: header.tx_id,
7050                            },
7051                        })
7052                    }
7053                    0x756eac32d73a7a70 => {
7054                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7055                        let mut req = fidl::new_empty!(
7056                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
7057                            fidl::encoding::DefaultFuchsiaResourceDialect
7058                        );
7059                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7060                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7061                        Ok(SocketRequest::SetSendBuffer {
7062                            value_bytes: req.value_bytes,
7063
7064                            responder: SocketSetSendBufferResponder {
7065                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7066                                tx_id: header.tx_id,
7067                            },
7068                        })
7069                    }
7070                    0x78a52fd9c7b2410b => {
7071                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7072                        let mut req = fidl::new_empty!(
7073                            fidl::encoding::EmptyPayload,
7074                            fidl::encoding::DefaultFuchsiaResourceDialect
7075                        );
7076                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7077                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7078                        Ok(SocketRequest::GetSendBuffer {
7079                            responder: SocketGetSendBufferResponder {
7080                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7081                                tx_id: header.tx_id,
7082                            },
7083                        })
7084                    }
7085                    0x6b0cf2f1919c7001 => {
7086                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7087                        let mut req = fidl::new_empty!(
7088                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7089                            fidl::encoding::DefaultFuchsiaResourceDialect
7090                        );
7091                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7092                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7093                        Ok(SocketRequest::SetReceiveBuffer {
7094                            value_bytes: req.value_bytes,
7095
7096                            responder: SocketSetReceiveBufferResponder {
7097                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7098                                tx_id: header.tx_id,
7099                            },
7100                        })
7101                    }
7102                    0x14c1a4b64f709e5c => {
7103                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7104                        let mut req = fidl::new_empty!(
7105                            fidl::encoding::EmptyPayload,
7106                            fidl::encoding::DefaultFuchsiaResourceDialect
7107                        );
7108                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7109                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7110                        Ok(SocketRequest::GetReceiveBuffer {
7111                            responder: SocketGetReceiveBufferResponder {
7112                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7113                                tx_id: header.tx_id,
7114                            },
7115                        })
7116                    }
7117                    0x572df8f0b920d2c7 => {
7118                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7119                        let mut req = fidl::new_empty!(
7120                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7121                            fidl::encoding::DefaultFuchsiaResourceDialect
7122                        );
7123                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7124                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7125                        Ok(SocketRequest::SetKeepAlive {
7126                            value: req.value,
7127
7128                            responder: SocketSetKeepAliveResponder {
7129                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7130                                tx_id: header.tx_id,
7131                            },
7132                        })
7133                    }
7134                    0x2dd29d3215f2c9d2 => {
7135                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7136                        let mut req = fidl::new_empty!(
7137                            fidl::encoding::EmptyPayload,
7138                            fidl::encoding::DefaultFuchsiaResourceDialect
7139                        );
7140                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7141                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7142                        Ok(SocketRequest::GetKeepAlive {
7143                            responder: SocketGetKeepAliveResponder {
7144                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7145                                tx_id: header.tx_id,
7146                            },
7147                        })
7148                    }
7149                    0x3ecb49968bee439 => {
7150                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7151                        let mut req = fidl::new_empty!(
7152                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7153                            fidl::encoding::DefaultFuchsiaResourceDialect
7154                        );
7155                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7156                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7157                        Ok(SocketRequest::SetOutOfBandInline {
7158                            value: req.value,
7159
7160                            responder: SocketSetOutOfBandInlineResponder {
7161                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7162                                tx_id: header.tx_id,
7163                            },
7164                        })
7165                    }
7166                    0x348c1ab3aeca1745 => {
7167                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7168                        let mut req = fidl::new_empty!(
7169                            fidl::encoding::EmptyPayload,
7170                            fidl::encoding::DefaultFuchsiaResourceDialect
7171                        );
7172                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7173                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7174                        Ok(SocketRequest::GetOutOfBandInline {
7175                            responder: SocketGetOutOfBandInlineResponder {
7176                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7177                                tx_id: header.tx_id,
7178                            },
7179                        })
7180                    }
7181                    0x6bbf00c53a4c78c2 => {
7182                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7183                        let mut req = fidl::new_empty!(
7184                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7185                            fidl::encoding::DefaultFuchsiaResourceDialect
7186                        );
7187                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7188                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7189                        Ok(SocketRequest::SetNoCheck {
7190                            value: req.value,
7191
7192                            responder: SocketSetNoCheckResponder {
7193                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7194                                tx_id: header.tx_id,
7195                            },
7196                        })
7197                    }
7198                    0x2cd4249286417694 => {
7199                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7200                        let mut req = fidl::new_empty!(
7201                            fidl::encoding::EmptyPayload,
7202                            fidl::encoding::DefaultFuchsiaResourceDialect
7203                        );
7204                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7205                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7206                        Ok(SocketRequest::GetNoCheck {
7207                            responder: SocketGetNoCheckResponder {
7208                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7209                                tx_id: header.tx_id,
7210                            },
7211                        })
7212                    }
7213                    0x45386351246e998e => {
7214                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7215                        let mut req = fidl::new_empty!(
7216                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7217                            fidl::encoding::DefaultFuchsiaResourceDialect
7218                        );
7219                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7220                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7221                        Ok(SocketRequest::SetLinger {
7222                            linger: req.linger,
7223                            length_secs: req.length_secs,
7224
7225                            responder: SocketSetLingerResponder {
7226                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7227                                tx_id: header.tx_id,
7228                            },
7229                        })
7230                    }
7231                    0x48eb20fc5ccb0e45 => {
7232                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7233                        let mut req = fidl::new_empty!(
7234                            fidl::encoding::EmptyPayload,
7235                            fidl::encoding::DefaultFuchsiaResourceDialect
7236                        );
7237                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7238                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7239                        Ok(SocketRequest::GetLinger {
7240                            responder: SocketGetLingerResponder {
7241                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7242                                tx_id: header.tx_id,
7243                            },
7244                        })
7245                    }
7246                    0x547dc9cc0455189e => {
7247                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7248                        let mut req = fidl::new_empty!(
7249                            fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Request,
7250                            fidl::encoding::DefaultFuchsiaResourceDialect
7251                        );
7252                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePort2Request>(&header, _body_bytes, handles, &mut req)?;
7253                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7254                        Ok(SocketRequest::SetReusePort2 {
7255                            value: req.value,
7256
7257                            responder: SocketSetReusePort2Responder {
7258                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7259                                tx_id: header.tx_id,
7260                            },
7261                        })
7262                    }
7263                    0x24dd3e5cb36d9ccb => {
7264                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7265                        let mut req = fidl::new_empty!(
7266                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7267                            fidl::encoding::DefaultFuchsiaResourceDialect
7268                        );
7269                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7270                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7271                        Ok(SocketRequest::SetReusePort {
7272                            value: req.value,
7273
7274                            responder: SocketSetReusePortResponder {
7275                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7276                                tx_id: header.tx_id,
7277                            },
7278                        })
7279                    }
7280                    0x7a112c1ab54ff828 => {
7281                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7282                        let mut req = fidl::new_empty!(
7283                            fidl::encoding::EmptyPayload,
7284                            fidl::encoding::DefaultFuchsiaResourceDialect
7285                        );
7286                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7287                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7288                        Ok(SocketRequest::GetReusePort {
7289                            responder: SocketGetReusePortResponder {
7290                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7291                                tx_id: header.tx_id,
7292                            },
7293                        })
7294                    }
7295                    0x67ce6db6c2ec8966 => {
7296                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7297                        let mut req = fidl::new_empty!(
7298                            fidl::encoding::EmptyPayload,
7299                            fidl::encoding::DefaultFuchsiaResourceDialect
7300                        );
7301                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7302                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7303                        Ok(SocketRequest::GetAcceptConn {
7304                            responder: SocketGetAcceptConnResponder {
7305                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7306                                tx_id: header.tx_id,
7307                            },
7308                        })
7309                    }
7310                    0x2118b483f28aafc4 => {
7311                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7312                        let mut req = fidl::new_empty!(
7313                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7314                            fidl::encoding::DefaultFuchsiaResourceDialect
7315                        );
7316                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7317                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7318                        Ok(SocketRequest::SetBindToDevice {
7319                            value: req.value,
7320
7321                            responder: SocketSetBindToDeviceResponder {
7322                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7323                                tx_id: header.tx_id,
7324                            },
7325                        })
7326                    }
7327                    0x1ab1fbf0ef7906c8 => {
7328                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7329                        let mut req = fidl::new_empty!(
7330                            fidl::encoding::EmptyPayload,
7331                            fidl::encoding::DefaultFuchsiaResourceDialect
7332                        );
7333                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7334                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7335                        Ok(SocketRequest::GetBindToDevice {
7336                            responder: SocketGetBindToDeviceResponder {
7337                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7338                                tx_id: header.tx_id,
7339                            },
7340                        })
7341                    }
7342                    0x6e387a0def00821 => {
7343                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7344                        let mut req = fidl::new_empty!(
7345                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7346                            fidl::encoding::DefaultFuchsiaResourceDialect
7347                        );
7348                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7349                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7350                        Ok(SocketRequest::SetBindToInterfaceIndex {
7351                            value: req.value,
7352
7353                            responder: SocketSetBindToInterfaceIndexResponder {
7354                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7355                                tx_id: header.tx_id,
7356                            },
7357                        })
7358                    }
7359                    0x59c31dd3e3078295 => {
7360                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7361                        let mut req = fidl::new_empty!(
7362                            fidl::encoding::EmptyPayload,
7363                            fidl::encoding::DefaultFuchsiaResourceDialect
7364                        );
7365                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7366                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7367                        Ok(SocketRequest::GetBindToInterfaceIndex {
7368                            responder: SocketGetBindToInterfaceIndexResponder {
7369                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7370                                tx_id: header.tx_id,
7371                            },
7372                        })
7373                    }
7374                    0x285d6516c263d839 => {
7375                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7376                        let mut req = fidl::new_empty!(
7377                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7378                            fidl::encoding::DefaultFuchsiaResourceDialect
7379                        );
7380                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7381                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7382                        Ok(SocketRequest::SetTimestamp {
7383                            value: req.value,
7384
7385                            responder: SocketSetTimestampResponder {
7386                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7387                                tx_id: header.tx_id,
7388                            },
7389                        })
7390                    }
7391                    0x49f2fffbbcc2bd27 => {
7392                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7393                        let mut req = fidl::new_empty!(
7394                            fidl::encoding::EmptyPayload,
7395                            fidl::encoding::DefaultFuchsiaResourceDialect
7396                        );
7397                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7398                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7399                        Ok(SocketRequest::GetTimestamp {
7400                            responder: SocketGetTimestampResponder {
7401                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7402                                tx_id: header.tx_id,
7403                            },
7404                        })
7405                    }
7406                    0x6ead6de09f653236 => {
7407                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7408                        let mut req = fidl::new_empty!(
7409                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7410                            fidl::encoding::DefaultFuchsiaResourceDialect
7411                        );
7412                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7413                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7414                        Ok(SocketRequest::SetMark {
7415                            domain: req.domain,
7416                            mark: req.mark,
7417
7418                            responder: SocketSetMarkResponder {
7419                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7420                                tx_id: header.tx_id,
7421                            },
7422                        })
7423                    }
7424                    0x57a2752c61d93d47 => {
7425                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7426                        let mut req = fidl::new_empty!(
7427                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7428                            fidl::encoding::DefaultFuchsiaResourceDialect
7429                        );
7430                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7431                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7432                        Ok(SocketRequest::GetMark {
7433                            domain: req.domain,
7434
7435                            responder: SocketGetMarkResponder {
7436                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7437                                tx_id: header.tx_id,
7438                            },
7439                        })
7440                    }
7441                    0x2c2f47fd8f924e52 => {
7442                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7443                        let mut req = fidl::new_empty!(
7444                            fidl::encoding::EmptyPayload,
7445                            fidl::encoding::DefaultFuchsiaResourceDialect
7446                        );
7447                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7448                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7449                        Ok(SocketRequest::GetCookie {
7450                            responder: SocketGetCookieResponder {
7451                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7452                                tx_id: header.tx_id,
7453                            },
7454                        })
7455                    }
7456                    0x4bc6400ae92125d => {
7457                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7458                        let mut req = fidl::new_empty!(
7459                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7460                            fidl::encoding::DefaultFuchsiaResourceDialect
7461                        );
7462                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7463                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7464                        Ok(SocketRequest::Bind {
7465                            addr: req.addr,
7466
7467                            responder: SocketBindResponder {
7468                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7469                                tx_id: header.tx_id,
7470                            },
7471                        })
7472                    }
7473                    0x5f05f19bfdd38871 => {
7474                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7475                        let mut req = fidl::new_empty!(
7476                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7477                            fidl::encoding::DefaultFuchsiaResourceDialect
7478                        );
7479                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7480                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7481                        Ok(SocketRequest::Connect {
7482                            addr: req.addr,
7483
7484                            responder: SocketConnectResponder {
7485                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7486                                tx_id: header.tx_id,
7487                            },
7488                        })
7489                    }
7490                    0x74e63b91f7b29b2 => {
7491                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7492                        let mut req = fidl::new_empty!(
7493                            fidl::encoding::EmptyPayload,
7494                            fidl::encoding::DefaultFuchsiaResourceDialect
7495                        );
7496                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7497                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7498                        Ok(SocketRequest::Disconnect {
7499                            responder: SocketDisconnectResponder {
7500                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7501                                tx_id: header.tx_id,
7502                            },
7503                        })
7504                    }
7505                    0x475f23f84a1a4f85 => {
7506                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7507                        let mut req = fidl::new_empty!(
7508                            fidl::encoding::EmptyPayload,
7509                            fidl::encoding::DefaultFuchsiaResourceDialect
7510                        );
7511                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7512                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7513                        Ok(SocketRequest::GetSockName {
7514                            responder: SocketGetSockNameResponder {
7515                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7516                                tx_id: header.tx_id,
7517                            },
7518                        })
7519                    }
7520                    0x1ffecf4bd5b6432e => {
7521                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7522                        let mut req = fidl::new_empty!(
7523                            fidl::encoding::EmptyPayload,
7524                            fidl::encoding::DefaultFuchsiaResourceDialect
7525                        );
7526                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7527                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7528                        Ok(SocketRequest::GetPeerName {
7529                            responder: SocketGetPeerNameResponder {
7530                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7531                                tx_id: header.tx_id,
7532                            },
7533                        })
7534                    }
7535                    0x247f38b6db68c336 => {
7536                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7537                        let mut req = fidl::new_empty!(
7538                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7539                            fidl::encoding::DefaultFuchsiaResourceDialect
7540                        );
7541                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7542                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7543                        Ok(SocketRequest::Shutdown {
7544                            mode: req.mode,
7545
7546                            responder: SocketShutdownResponder {
7547                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7548                                tx_id: header.tx_id,
7549                            },
7550                        })
7551                    }
7552                    0x995c600475b6d46 => {
7553                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7554                        let mut req = fidl::new_empty!(
7555                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7556                            fidl::encoding::DefaultFuchsiaResourceDialect
7557                        );
7558                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7559                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7560                        Ok(SocketRequest::SetIpTypeOfService {
7561                            value: req.value,
7562
7563                            responder: SocketSetIpTypeOfServiceResponder {
7564                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7565                                tx_id: header.tx_id,
7566                            },
7567                        })
7568                    }
7569                    0x3814a04259f75fcb => {
7570                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7571                        let mut req = fidl::new_empty!(
7572                            fidl::encoding::EmptyPayload,
7573                            fidl::encoding::DefaultFuchsiaResourceDialect
7574                        );
7575                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7576                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7577                        Ok(SocketRequest::GetIpTypeOfService {
7578                            responder: SocketGetIpTypeOfServiceResponder {
7579                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7580                                tx_id: header.tx_id,
7581                            },
7582                        })
7583                    }
7584                    0x29e2424b433ae1ef => {
7585                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7586                        let mut req = fidl::new_empty!(
7587                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7588                            fidl::encoding::DefaultFuchsiaResourceDialect
7589                        );
7590                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7591                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7592                        Ok(SocketRequest::SetIpTtl {
7593                            value: req.value,
7594
7595                            responder: SocketSetIpTtlResponder {
7596                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7597                                tx_id: header.tx_id,
7598                            },
7599                        })
7600                    }
7601                    0x47e47fa1f24da471 => {
7602                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7603                        let mut req = fidl::new_empty!(
7604                            fidl::encoding::EmptyPayload,
7605                            fidl::encoding::DefaultFuchsiaResourceDialect
7606                        );
7607                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7608                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7609                        Ok(SocketRequest::GetIpTtl {
7610                            responder: SocketGetIpTtlResponder {
7611                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7612                                tx_id: header.tx_id,
7613                            },
7614                        })
7615                    }
7616                    0x392d16bee20c0e16 => {
7617                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7618                        let mut req = fidl::new_empty!(
7619                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7620                            fidl::encoding::DefaultFuchsiaResourceDialect
7621                        );
7622                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7623                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7624                        Ok(SocketRequest::SetIpPacketInfo {
7625                            value: req.value,
7626
7627                            responder: SocketSetIpPacketInfoResponder {
7628                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7629                                tx_id: header.tx_id,
7630                            },
7631                        })
7632                    }
7633                    0x54b505f242280740 => {
7634                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7635                        let mut req = fidl::new_empty!(
7636                            fidl::encoding::EmptyPayload,
7637                            fidl::encoding::DefaultFuchsiaResourceDialect
7638                        );
7639                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7640                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7641                        Ok(SocketRequest::GetIpPacketInfo {
7642                            responder: SocketGetIpPacketInfoResponder {
7643                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7644                                tx_id: header.tx_id,
7645                            },
7646                        })
7647                    }
7648                    0x6c4f6714995f84ef => {
7649                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7650                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7651                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7652                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7653                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7654                            value: req.value,
7655
7656                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7657                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7658                                tx_id: header.tx_id,
7659                            },
7660                        })
7661                    }
7662                    0x4158ba7dc2795960 => {
7663                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7664                        let mut req = fidl::new_empty!(
7665                            fidl::encoding::EmptyPayload,
7666                            fidl::encoding::DefaultFuchsiaResourceDialect
7667                        );
7668                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7669                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7670                        Ok(SocketRequest::GetIpReceiveTypeOfService {
7671                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7672                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7673                                tx_id: header.tx_id,
7674                            },
7675                        })
7676                    }
7677                    0x46f15be0ce0ab82b => {
7678                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7679                        let mut req = fidl::new_empty!(
7680                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7681                            fidl::encoding::DefaultFuchsiaResourceDialect
7682                        );
7683                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7684                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7685                        Ok(SocketRequest::SetIpReceiveTtl {
7686                            value: req.value,
7687
7688                            responder: SocketSetIpReceiveTtlResponder {
7689                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7690                                tx_id: header.tx_id,
7691                            },
7692                        })
7693                    }
7694                    0x678ddd5a5dfa2eb5 => {
7695                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7696                        let mut req = fidl::new_empty!(
7697                            fidl::encoding::EmptyPayload,
7698                            fidl::encoding::DefaultFuchsiaResourceDialect
7699                        );
7700                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7701                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7702                        Ok(SocketRequest::GetIpReceiveTtl {
7703                            responder: SocketGetIpReceiveTtlResponder {
7704                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7705                                tx_id: header.tx_id,
7706                            },
7707                        })
7708                    }
7709                    0x752fbfa9b12befe => {
7710                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7711                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7712                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7713                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7714                        Ok(SocketRequest::SetIpMulticastInterface {
7715                            iface: req.iface,
7716                            address: req.address,
7717
7718                            responder: SocketSetIpMulticastInterfaceResponder {
7719                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7720                                tx_id: header.tx_id,
7721                            },
7722                        })
7723                    }
7724                    0x320bd14c4df046c4 => {
7725                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7726                        let mut req = fidl::new_empty!(
7727                            fidl::encoding::EmptyPayload,
7728                            fidl::encoding::DefaultFuchsiaResourceDialect
7729                        );
7730                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7731                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7732                        Ok(SocketRequest::GetIpMulticastInterface {
7733                            responder: SocketGetIpMulticastInterfaceResponder {
7734                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7735                                tx_id: header.tx_id,
7736                            },
7737                        })
7738                    }
7739                    0x63134d53772916a1 => {
7740                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7741                        let mut req = fidl::new_empty!(
7742                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7743                            fidl::encoding::DefaultFuchsiaResourceDialect
7744                        );
7745                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7746                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7747                        Ok(SocketRequest::SetIpMulticastTtl {
7748                            value: req.value,
7749
7750                            responder: SocketSetIpMulticastTtlResponder {
7751                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7752                                tx_id: header.tx_id,
7753                            },
7754                        })
7755                    }
7756                    0x4665cd378f39e1a => {
7757                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7758                        let mut req = fidl::new_empty!(
7759                            fidl::encoding::EmptyPayload,
7760                            fidl::encoding::DefaultFuchsiaResourceDialect
7761                        );
7762                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7763                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7764                        Ok(SocketRequest::GetIpMulticastTtl {
7765                            responder: SocketGetIpMulticastTtlResponder {
7766                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7767                                tx_id: header.tx_id,
7768                            },
7769                        })
7770                    }
7771                    0x20c55c11f00943ea => {
7772                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7773                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7774                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7775                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7776                        Ok(SocketRequest::SetIpMulticastLoopback {
7777                            value: req.value,
7778
7779                            responder: SocketSetIpMulticastLoopbackResponder {
7780                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7781                                tx_id: header.tx_id,
7782                            },
7783                        })
7784                    }
7785                    0x3b6b26ff558298f2 => {
7786                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7787                        let mut req = fidl::new_empty!(
7788                            fidl::encoding::EmptyPayload,
7789                            fidl::encoding::DefaultFuchsiaResourceDialect
7790                        );
7791                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7792                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7793                        Ok(SocketRequest::GetIpMulticastLoopback {
7794                            responder: SocketGetIpMulticastLoopbackResponder {
7795                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7796                                tx_id: header.tx_id,
7797                            },
7798                        })
7799                    }
7800                    0x76bc7df115a3b4d0 => {
7801                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7802                        let mut req = fidl::new_empty!(
7803                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7804                            fidl::encoding::DefaultFuchsiaResourceDialect
7805                        );
7806                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7807                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7808                        Ok(SocketRequest::AddIpMembership {
7809                            membership: req.membership,
7810
7811                            responder: SocketAddIpMembershipResponder {
7812                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7813                                tx_id: header.tx_id,
7814                            },
7815                        })
7816                    }
7817                    0x2888f3099188d03 => {
7818                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7819                        let mut req = fidl::new_empty!(
7820                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7821                            fidl::encoding::DefaultFuchsiaResourceDialect
7822                        );
7823                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7824                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7825                        Ok(SocketRequest::DropIpMembership {
7826                            membership: req.membership,
7827
7828                            responder: SocketDropIpMembershipResponder {
7829                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7830                                tx_id: header.tx_id,
7831                            },
7832                        })
7833                    }
7834                    0x1ae532b0c066e3a0 => {
7835                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7836                        let mut req = fidl::new_empty!(
7837                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7838                            fidl::encoding::DefaultFuchsiaResourceDialect
7839                        );
7840                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7841                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7842                        Ok(SocketRequest::SetIpTransparent {
7843                            value: req.value,
7844
7845                            responder: SocketSetIpTransparentResponder {
7846                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7847                                tx_id: header.tx_id,
7848                            },
7849                        })
7850                    }
7851                    0x51d43695962ebfb5 => {
7852                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7853                        let mut req = fidl::new_empty!(
7854                            fidl::encoding::EmptyPayload,
7855                            fidl::encoding::DefaultFuchsiaResourceDialect
7856                        );
7857                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7858                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7859                        Ok(SocketRequest::GetIpTransparent {
7860                            responder: SocketGetIpTransparentResponder {
7861                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7862                                tx_id: header.tx_id,
7863                            },
7864                        })
7865                    }
7866                    0x4722b4ce52f7840 => {
7867                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7868                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7869                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7870                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7871                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7872                            value: req.value,
7873
7874                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
7875                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7876                                tx_id: header.tx_id,
7877                            },
7878                        })
7879                    }
7880                    0x2a0e7dc5d6bfdfe9 => {
7881                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7882                        let mut req = fidl::new_empty!(
7883                            fidl::encoding::EmptyPayload,
7884                            fidl::encoding::DefaultFuchsiaResourceDialect
7885                        );
7886                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7887                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7888                        Ok(SocketRequest::GetIpReceiveOriginalDestinationAddress {
7889                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
7890                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7891                                tx_id: header.tx_id,
7892                            },
7893                        })
7894                    }
7895                    0x7c94727acb4ea4b3 => {
7896                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7897                        let mut req = fidl::new_empty!(
7898                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
7899                            fidl::encoding::DefaultFuchsiaResourceDialect
7900                        );
7901                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7902                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7903                        Ok(SocketRequest::AddIpv6Membership {
7904                            membership: req.membership,
7905
7906                            responder: SocketAddIpv6MembershipResponder {
7907                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7908                                tx_id: header.tx_id,
7909                            },
7910                        })
7911                    }
7912                    0x42104c70ccaba304 => {
7913                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7914                        let mut req = fidl::new_empty!(
7915                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
7916                            fidl::encoding::DefaultFuchsiaResourceDialect
7917                        );
7918                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7919                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7920                        Ok(SocketRequest::DropIpv6Membership {
7921                            membership: req.membership,
7922
7923                            responder: SocketDropIpv6MembershipResponder {
7924                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7925                                tx_id: header.tx_id,
7926                            },
7927                        })
7928                    }
7929                    0x135f76db3774ab3b => {
7930                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7931                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7932                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7933                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7934                        Ok(SocketRequest::SetIpv6MulticastInterface {
7935                            value: req.value,
7936
7937                            responder: SocketSetIpv6MulticastInterfaceResponder {
7938                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7939                                tx_id: header.tx_id,
7940                            },
7941                        })
7942                    }
7943                    0x1f26fcdd348f1882 => {
7944                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7945                        let mut req = fidl::new_empty!(
7946                            fidl::encoding::EmptyPayload,
7947                            fidl::encoding::DefaultFuchsiaResourceDialect
7948                        );
7949                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7950                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7951                        Ok(SocketRequest::GetIpv6MulticastInterface {
7952                            responder: SocketGetIpv6MulticastInterfaceResponder {
7953                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7954                                tx_id: header.tx_id,
7955                            },
7956                        })
7957                    }
7958                    0x157d51e98f462859 => {
7959                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7960                        let mut req = fidl::new_empty!(
7961                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
7962                            fidl::encoding::DefaultFuchsiaResourceDialect
7963                        );
7964                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
7965                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7966                        Ok(SocketRequest::SetIpv6UnicastHops {
7967                            value: req.value,
7968
7969                            responder: SocketSetIpv6UnicastHopsResponder {
7970                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7971                                tx_id: header.tx_id,
7972                            },
7973                        })
7974                    }
7975                    0x21f4641cad8bd8d2 => {
7976                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7977                        let mut req = fidl::new_empty!(
7978                            fidl::encoding::EmptyPayload,
7979                            fidl::encoding::DefaultFuchsiaResourceDialect
7980                        );
7981                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7982                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7983                        Ok(SocketRequest::GetIpv6UnicastHops {
7984                            responder: SocketGetIpv6UnicastHopsResponder {
7985                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7986                                tx_id: header.tx_id,
7987                            },
7988                        })
7989                    }
7990                    0x5c24808ed2e84a1e => {
7991                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7992                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7993                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
7994                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7995                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
7996                            value: req.value,
7997
7998                            responder: SocketSetIpv6ReceiveHopLimitResponder {
7999                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8000                                tx_id: header.tx_id,
8001                            },
8002                        })
8003                    }
8004                    0x341e06689885b4c0 => {
8005                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8006                        let mut req = fidl::new_empty!(
8007                            fidl::encoding::EmptyPayload,
8008                            fidl::encoding::DefaultFuchsiaResourceDialect
8009                        );
8010                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8011                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8012                        Ok(SocketRequest::GetIpv6ReceiveHopLimit {
8013                            responder: SocketGetIpv6ReceiveHopLimitResponder {
8014                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8015                                tx_id: header.tx_id,
8016                            },
8017                        })
8018                    }
8019                    0x25b9cd4d181f82c1 => {
8020                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8021                        let mut req = fidl::new_empty!(
8022                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
8023                            fidl::encoding::DefaultFuchsiaResourceDialect
8024                        );
8025                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8026                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8027                        Ok(SocketRequest::SetIpv6MulticastHops {
8028                            value: req.value,
8029
8030                            responder: SocketSetIpv6MulticastHopsResponder {
8031                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8032                                tx_id: header.tx_id,
8033                            },
8034                        })
8035                    }
8036                    0x52916948a365012a => {
8037                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8038                        let mut req = fidl::new_empty!(
8039                            fidl::encoding::EmptyPayload,
8040                            fidl::encoding::DefaultFuchsiaResourceDialect
8041                        );
8042                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8043                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8044                        Ok(SocketRequest::GetIpv6MulticastHops {
8045                            responder: SocketGetIpv6MulticastHopsResponder {
8046                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8047                                tx_id: header.tx_id,
8048                            },
8049                        })
8050                    }
8051                    0x55701c409ff41b40 => {
8052                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8053                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8054                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
8055                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8056                        Ok(SocketRequest::SetIpv6MulticastLoopback {
8057                            value: req.value,
8058
8059                            responder: SocketSetIpv6MulticastLoopbackResponder {
8060                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8061                                tx_id: header.tx_id,
8062                            },
8063                        })
8064                    }
8065                    0x4415b701fde319c3 => {
8066                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8067                        let mut req = fidl::new_empty!(
8068                            fidl::encoding::EmptyPayload,
8069                            fidl::encoding::DefaultFuchsiaResourceDialect
8070                        );
8071                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8072                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8073                        Ok(SocketRequest::GetIpv6MulticastLoopback {
8074                            responder: SocketGetIpv6MulticastLoopbackResponder {
8075                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8076                                tx_id: header.tx_id,
8077                            },
8078                        })
8079                    }
8080                    0x4873f1364758cbba => {
8081                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8082                        let mut req = fidl::new_empty!(
8083                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8084                            fidl::encoding::DefaultFuchsiaResourceDialect
8085                        );
8086                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8087                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8088                        Ok(SocketRequest::SetIpv6Only {
8089                            value: req.value,
8090
8091                            responder: SocketSetIpv6OnlyResponder {
8092                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8093                                tx_id: header.tx_id,
8094                            },
8095                        })
8096                    }
8097                    0x4aa3340a1a26b89c => {
8098                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8099                        let mut req = fidl::new_empty!(
8100                            fidl::encoding::EmptyPayload,
8101                            fidl::encoding::DefaultFuchsiaResourceDialect
8102                        );
8103                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8104                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8105                        Ok(SocketRequest::GetIpv6Only {
8106                            responder: SocketGetIpv6OnlyResponder {
8107                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8108                                tx_id: header.tx_id,
8109                            },
8110                        })
8111                    }
8112                    0x58f07c8788d099a0 => {
8113                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8114                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8115                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8116                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8117                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8118                            value: req.value,
8119
8120                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8121                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8122                                tx_id: header.tx_id,
8123                            },
8124                        })
8125                    }
8126                    0x2e334df1da553ffa => {
8127                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8128                        let mut req = fidl::new_empty!(
8129                            fidl::encoding::EmptyPayload,
8130                            fidl::encoding::DefaultFuchsiaResourceDialect
8131                        );
8132                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8133                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8134                        Ok(SocketRequest::GetIpv6ReceiveTrafficClass {
8135                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8136                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8137                                tx_id: header.tx_id,
8138                            },
8139                        })
8140                    }
8141                    0x6af077800c5a0b4f => {
8142                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8143                        let mut req = fidl::new_empty!(
8144                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8145                            fidl::encoding::DefaultFuchsiaResourceDialect
8146                        );
8147                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8148                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8149                        Ok(SocketRequest::SetIpv6TrafficClass {
8150                            value: req.value,
8151
8152                            responder: SocketSetIpv6TrafficClassResponder {
8153                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8154                                tx_id: header.tx_id,
8155                            },
8156                        })
8157                    }
8158                    0x6baf6eed8fc2f04 => {
8159                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8160                        let mut req = fidl::new_empty!(
8161                            fidl::encoding::EmptyPayload,
8162                            fidl::encoding::DefaultFuchsiaResourceDialect
8163                        );
8164                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8165                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8166                        Ok(SocketRequest::GetIpv6TrafficClass {
8167                            responder: SocketGetIpv6TrafficClassResponder {
8168                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8169                                tx_id: header.tx_id,
8170                            },
8171                        })
8172                    }
8173                    0x19259775b1a92768 => {
8174                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8175                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8176                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8177                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8178                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8179                            value: req.value,
8180
8181                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8182                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8183                                tx_id: header.tx_id,
8184                            },
8185                        })
8186                    }
8187                    0x7acd4a2775baec75 => {
8188                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8189                        let mut req = fidl::new_empty!(
8190                            fidl::encoding::EmptyPayload,
8191                            fidl::encoding::DefaultFuchsiaResourceDialect
8192                        );
8193                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8194                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8195                        Ok(SocketRequest::GetIpv6ReceivePacketInfo {
8196                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8197                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8198                                tx_id: header.tx_id,
8199                            },
8200                        })
8201                    }
8202                    0x38bf28f0dafdbac0 => {
8203                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8204                        let mut req = fidl::new_empty!(
8205                            fidl::encoding::EmptyPayload,
8206                            fidl::encoding::DefaultFuchsiaResourceDialect
8207                        );
8208                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8209                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8210                        Ok(SocketRequest::GetOriginalDestination {
8211                            responder: SocketGetOriginalDestinationResponder {
8212                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8213                                tx_id: header.tx_id,
8214                            },
8215                        })
8216                    }
8217                    0x335706eccf54a135 => {
8218                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8219                        let mut req = fidl::new_empty!(
8220                            fidl::encoding::EmptyPayload,
8221                            fidl::encoding::DefaultFuchsiaResourceDialect
8222                        );
8223                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8224                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8225                        Ok(SocketRequest::Describe {
8226                            responder: SocketDescribeResponder {
8227                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8228                                tx_id: header.tx_id,
8229                            },
8230                        })
8231                    }
8232                    0x1dfb695351d3aa1d => {
8233                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8234                        let mut req = fidl::new_empty!(
8235                            SocketRecvMsgRequest,
8236                            fidl::encoding::DefaultFuchsiaResourceDialect
8237                        );
8238                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8239                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8240                        Ok(SocketRequest::RecvMsg {
8241                            want_addr: req.want_addr,
8242                            data_len: req.data_len,
8243                            want_control: req.want_control,
8244                            flags: req.flags,
8245
8246                            responder: SocketRecvMsgResponder {
8247                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8248                                tx_id: header.tx_id,
8249                            },
8250                        })
8251                    }
8252                    0x2cf1eac9a7fc8958 => {
8253                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8254                        let mut req = fidl::new_empty!(
8255                            SocketSendMsgRequest,
8256                            fidl::encoding::DefaultFuchsiaResourceDialect
8257                        );
8258                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8259                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8260                        Ok(SocketRequest::SendMsg {
8261                            addr: req.addr,
8262                            data: req.data,
8263                            control: req.control,
8264                            flags: req.flags,
8265
8266                            responder: SocketSendMsgResponder {
8267                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8268                                tx_id: header.tx_id,
8269                            },
8270                        })
8271                    }
8272                    0x39676f75aec339ba => {
8273                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8274                        let mut req = fidl::new_empty!(
8275                            fidl::encoding::EmptyPayload,
8276                            fidl::encoding::DefaultFuchsiaResourceDialect
8277                        );
8278                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8279                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8280                        Ok(SocketRequest::GetInfo {
8281                            responder: SocketGetInfoResponder {
8282                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8283                                tx_id: header.tx_id,
8284                            },
8285                        })
8286                    }
8287                    0x5d06a606d95e8f3 => {
8288                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8289                        let mut req = fidl::new_empty!(
8290                            SocketSetIpHeaderIncludedRequest,
8291                            fidl::encoding::DefaultFuchsiaResourceDialect
8292                        );
8293                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8294                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8295                        Ok(SocketRequest::SetIpHeaderIncluded {
8296                            value: req.value,
8297
8298                            responder: SocketSetIpHeaderIncludedResponder {
8299                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8300                                tx_id: header.tx_id,
8301                            },
8302                        })
8303                    }
8304                    0x76125ad1f4d175f6 => {
8305                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8306                        let mut req = fidl::new_empty!(
8307                            fidl::encoding::EmptyPayload,
8308                            fidl::encoding::DefaultFuchsiaResourceDialect
8309                        );
8310                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8311                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8312                        Ok(SocketRequest::GetIpHeaderIncluded {
8313                            responder: SocketGetIpHeaderIncludedResponder {
8314                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8315                                tx_id: header.tx_id,
8316                            },
8317                        })
8318                    }
8319                    0x4ebea92a43ae68a9 => {
8320                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8321                        let mut req = fidl::new_empty!(
8322                            SocketSetIcmpv6FilterRequest,
8323                            fidl::encoding::DefaultFuchsiaResourceDialect
8324                        );
8325                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8326                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8327                        Ok(SocketRequest::SetIcmpv6Filter {
8328                            filter: req.filter,
8329
8330                            responder: SocketSetIcmpv6FilterResponder {
8331                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8332                                tx_id: header.tx_id,
8333                            },
8334                        })
8335                    }
8336                    0x43bd4f3bc0970ace => {
8337                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8338                        let mut req = fidl::new_empty!(
8339                            fidl::encoding::EmptyPayload,
8340                            fidl::encoding::DefaultFuchsiaResourceDialect
8341                        );
8342                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8343                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8344                        Ok(SocketRequest::GetIcmpv6Filter {
8345                            responder: SocketGetIcmpv6FilterResponder {
8346                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8347                                tx_id: header.tx_id,
8348                            },
8349                        })
8350                    }
8351                    0x18b7809577199cb4 => {
8352                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8353                        let mut req = fidl::new_empty!(
8354                            SocketSetIpv6ChecksumRequest,
8355                            fidl::encoding::DefaultFuchsiaResourceDialect
8356                        );
8357                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8358                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8359                        Ok(SocketRequest::SetIpv6Checksum {
8360                            config: req.config,
8361
8362                            responder: SocketSetIpv6ChecksumResponder {
8363                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8364                                tx_id: header.tx_id,
8365                            },
8366                        })
8367                    }
8368                    0x1847bf5b2d263dd => {
8369                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8370                        let mut req = fidl::new_empty!(
8371                            fidl::encoding::EmptyPayload,
8372                            fidl::encoding::DefaultFuchsiaResourceDialect
8373                        );
8374                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8375                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8376                        Ok(SocketRequest::GetIpv6Checksum {
8377                            responder: SocketGetIpv6ChecksumResponder {
8378                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8379                                tx_id: header.tx_id,
8380                            },
8381                        })
8382                    }
8383                    _ => Err(fidl::Error::UnknownOrdinal {
8384                        ordinal: header.ordinal,
8385                        protocol_name:
8386                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8387                    }),
8388                }))
8389            },
8390        )
8391    }
8392}
8393
8394/// A raw network socket.
8395///
8396/// Once a socket has been retrieved from a provider, this interface is then
8397/// used to further configure and use the socket. This interface is essentially
8398/// POSIX.
8399///
8400/// All methods on this type are nonblocking; their exact behaviors match their
8401/// Linux counterparts.
8402///
8403/// *Warning:* This protocol is not yet ready for direct use by clients.
8404/// Instead, clients should use the BSD sockets API to interact with sockets.
8405/// We plan to change this protocol substantially and clients that couple
8406/// directly to this protocol will make those changes more difficult.
8407#[derive(Debug)]
8408pub enum SocketRequest {
8409    Clone {
8410        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8411        control_handle: SocketControlHandle,
8412    },
8413    /// Terminates the connection.
8414    ///
8415    /// After calling `Close`, the client must not send any other requests.
8416    ///
8417    /// Servers, after sending the status response, should close the connection
8418    /// regardless of status and without sending an epitaph.
8419    ///
8420    /// Closing the client end of the channel should be semantically equivalent
8421    /// to calling `Close` without knowing when the close has completed or its
8422    /// status.
8423    Close {
8424        responder: SocketCloseResponder,
8425    },
8426    Query {
8427        responder: SocketQueryResponder,
8428    },
8429    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8430    SetReuseAddress {
8431        value: bool,
8432        responder: SocketSetReuseAddressResponder,
8433    },
8434    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8435    GetReuseAddress {
8436        responder: SocketGetReuseAddressResponder,
8437    },
8438    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8439    /// Returns the last error if there is an error set on the socket.
8440    GetError {
8441        responder: SocketGetErrorResponder,
8442    },
8443    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8444    SetBroadcast {
8445        value: bool,
8446        responder: SocketSetBroadcastResponder,
8447    },
8448    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8449    GetBroadcast {
8450        responder: SocketGetBroadcastResponder,
8451    },
8452    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8453    SetSendBuffer {
8454        value_bytes: u64,
8455        responder: SocketSetSendBufferResponder,
8456    },
8457    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8458    GetSendBuffer {
8459        responder: SocketGetSendBufferResponder,
8460    },
8461    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8462    SetReceiveBuffer {
8463        value_bytes: u64,
8464        responder: SocketSetReceiveBufferResponder,
8465    },
8466    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8467    GetReceiveBuffer {
8468        responder: SocketGetReceiveBufferResponder,
8469    },
8470    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8471    SetKeepAlive {
8472        value: bool,
8473        responder: SocketSetKeepAliveResponder,
8474    },
8475    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8476    GetKeepAlive {
8477        responder: SocketGetKeepAliveResponder,
8478    },
8479    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8480    SetOutOfBandInline {
8481        value: bool,
8482        responder: SocketSetOutOfBandInlineResponder,
8483    },
8484    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8485    GetOutOfBandInline {
8486        responder: SocketGetOutOfBandInlineResponder,
8487    },
8488    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8489    SetNoCheck {
8490        value: bool,
8491        responder: SocketSetNoCheckResponder,
8492    },
8493    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8494    GetNoCheck {
8495        responder: SocketGetNoCheckResponder,
8496    },
8497    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8498    SetLinger {
8499        linger: bool,
8500        length_secs: u32,
8501        responder: SocketSetLingerResponder,
8502    },
8503    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8504    GetLinger {
8505        responder: SocketGetLingerResponder,
8506    },
8507    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8508    SetReusePort2 {
8509        value: fidl_fuchsia_posix_socket::ReusePortOption,
8510        responder: SocketSetReusePort2Responder,
8511    },
8512    /// Old version of `SetReusePort`. Will be deprecated and removed in the
8513    /// future.
8514    SetReusePort {
8515        value: bool,
8516        responder: SocketSetReusePortResponder,
8517    },
8518    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8519    GetReusePort {
8520        responder: SocketGetReusePortResponder,
8521    },
8522    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8523    GetAcceptConn {
8524        responder: SocketGetAcceptConnResponder,
8525    },
8526    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8527    SetBindToDevice {
8528        value: String,
8529        responder: SocketSetBindToDeviceResponder,
8530    },
8531    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8532    GetBindToDevice {
8533        responder: SocketGetBindToDeviceResponder,
8534    },
8535    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8536    /// If `value` is 0, this clears the bound interface.
8537    SetBindToInterfaceIndex {
8538        value: u64,
8539        responder: SocketSetBindToInterfaceIndexResponder,
8540    },
8541    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8542    GetBindToInterfaceIndex {
8543        responder: SocketGetBindToInterfaceIndexResponder,
8544    },
8545    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8546    SetTimestamp {
8547        value: fidl_fuchsia_posix_socket::TimestampOption,
8548        responder: SocketSetTimestampResponder,
8549    },
8550    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8551    GetTimestamp {
8552        responder: SocketGetTimestampResponder,
8553    },
8554    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8555    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8556    /// mark can be set independently in each domain.
8557    SetMark {
8558        domain: fidl_fuchsia_net::MarkDomain,
8559        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8560        responder: SocketSetMarkResponder,
8561    },
8562    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8563    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8564    /// mark can be retrieved independently in each domain.
8565    GetMark {
8566        domain: fidl_fuchsia_net::MarkDomain,
8567        responder: SocketGetMarkResponder,
8568    },
8569    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
8570    GetCookie {
8571        responder: SocketGetCookieResponder,
8572    },
8573    /// Sets the local address used for the socket.
8574    Bind {
8575        addr: fidl_fuchsia_net::SocketAddress,
8576        responder: SocketBindResponder,
8577    },
8578    /// Initiates a connection to a remote address.
8579    Connect {
8580        addr: fidl_fuchsia_net::SocketAddress,
8581        responder: SocketConnectResponder,
8582    },
8583    /// Clears connection information from this socket.
8584    Disconnect {
8585        responder: SocketDisconnectResponder,
8586    },
8587    /// Retrieves the local socket address.
8588    GetSockName {
8589        responder: SocketGetSockNameResponder,
8590    },
8591    /// Retrieves the remote socket address.
8592    GetPeerName {
8593        responder: SocketGetPeerNameResponder,
8594    },
8595    /// Shuts down part of the socket.
8596    Shutdown {
8597        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8598        responder: SocketShutdownResponder,
8599    },
8600    /// Set `SOL_IP` -> `IP_TOS`.
8601    SetIpTypeOfService {
8602        value: u8,
8603        responder: SocketSetIpTypeOfServiceResponder,
8604    },
8605    /// Get `SOL_IP` -> `IP_TOS`.
8606    GetIpTypeOfService {
8607        responder: SocketGetIpTypeOfServiceResponder,
8608    },
8609    /// Set `SOL_IP` -> `IP_TTL`.
8610    SetIpTtl {
8611        value: fidl_fuchsia_posix_socket::OptionalUint8,
8612        responder: SocketSetIpTtlResponder,
8613    },
8614    /// Get `SOL_IP` -> `IP_TTL`.
8615    GetIpTtl {
8616        responder: SocketGetIpTtlResponder,
8617    },
8618    /// Set `SOL_IP` -> `IP_PKTINFO`.
8619    SetIpPacketInfo {
8620        value: bool,
8621        responder: SocketSetIpPacketInfoResponder,
8622    },
8623    /// Get `SOL_IP` -> `IP_PKTINFO`.
8624    GetIpPacketInfo {
8625        responder: SocketGetIpPacketInfoResponder,
8626    },
8627    /// Set `SOL_IP` -> `IP_RECVTOS`.
8628    SetIpReceiveTypeOfService {
8629        value: bool,
8630        responder: SocketSetIpReceiveTypeOfServiceResponder,
8631    },
8632    /// Get `SOL_IP` -> `IP_RECVTOS`.
8633    GetIpReceiveTypeOfService {
8634        responder: SocketGetIpReceiveTypeOfServiceResponder,
8635    },
8636    /// Set `SOL_IP` -> `IP_RECVTTL`.
8637    SetIpReceiveTtl {
8638        value: bool,
8639        responder: SocketSetIpReceiveTtlResponder,
8640    },
8641    /// Get `SOL_IP` -> `IP_RECVTTL`.
8642    GetIpReceiveTtl {
8643        responder: SocketGetIpReceiveTtlResponder,
8644    },
8645    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8646    SetIpMulticastInterface {
8647        iface: u64,
8648        address: fidl_fuchsia_net::Ipv4Address,
8649        responder: SocketSetIpMulticastInterfaceResponder,
8650    },
8651    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8652    GetIpMulticastInterface {
8653        responder: SocketGetIpMulticastInterfaceResponder,
8654    },
8655    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8656    SetIpMulticastTtl {
8657        value: fidl_fuchsia_posix_socket::OptionalUint8,
8658        responder: SocketSetIpMulticastTtlResponder,
8659    },
8660    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8661    GetIpMulticastTtl {
8662        responder: SocketGetIpMulticastTtlResponder,
8663    },
8664    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8665    SetIpMulticastLoopback {
8666        value: bool,
8667        responder: SocketSetIpMulticastLoopbackResponder,
8668    },
8669    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8670    GetIpMulticastLoopback {
8671        responder: SocketGetIpMulticastLoopbackResponder,
8672    },
8673    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8674    AddIpMembership {
8675        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8676        responder: SocketAddIpMembershipResponder,
8677    },
8678    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8679    DropIpMembership {
8680        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8681        responder: SocketDropIpMembershipResponder,
8682    },
8683    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8684    SetIpTransparent {
8685        value: bool,
8686        responder: SocketSetIpTransparentResponder,
8687    },
8688    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8689    GetIpTransparent {
8690        responder: SocketGetIpTransparentResponder,
8691    },
8692    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8693    SetIpReceiveOriginalDestinationAddress {
8694        value: bool,
8695        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8696    },
8697    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8698    GetIpReceiveOriginalDestinationAddress {
8699        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8700    },
8701    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8702    AddIpv6Membership {
8703        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8704        responder: SocketAddIpv6MembershipResponder,
8705    },
8706    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8707    DropIpv6Membership {
8708        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8709        responder: SocketDropIpv6MembershipResponder,
8710    },
8711    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8712    SetIpv6MulticastInterface {
8713        value: u64,
8714        responder: SocketSetIpv6MulticastInterfaceResponder,
8715    },
8716    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8717    GetIpv6MulticastInterface {
8718        responder: SocketGetIpv6MulticastInterfaceResponder,
8719    },
8720    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8721    SetIpv6UnicastHops {
8722        value: fidl_fuchsia_posix_socket::OptionalUint8,
8723        responder: SocketSetIpv6UnicastHopsResponder,
8724    },
8725    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8726    GetIpv6UnicastHops {
8727        responder: SocketGetIpv6UnicastHopsResponder,
8728    },
8729    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8730    SetIpv6ReceiveHopLimit {
8731        value: bool,
8732        responder: SocketSetIpv6ReceiveHopLimitResponder,
8733    },
8734    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8735    GetIpv6ReceiveHopLimit {
8736        responder: SocketGetIpv6ReceiveHopLimitResponder,
8737    },
8738    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8739    SetIpv6MulticastHops {
8740        value: fidl_fuchsia_posix_socket::OptionalUint8,
8741        responder: SocketSetIpv6MulticastHopsResponder,
8742    },
8743    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8744    GetIpv6MulticastHops {
8745        responder: SocketGetIpv6MulticastHopsResponder,
8746    },
8747    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8748    SetIpv6MulticastLoopback {
8749        value: bool,
8750        responder: SocketSetIpv6MulticastLoopbackResponder,
8751    },
8752    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8753    GetIpv6MulticastLoopback {
8754        responder: SocketGetIpv6MulticastLoopbackResponder,
8755    },
8756    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8757    SetIpv6Only {
8758        value: bool,
8759        responder: SocketSetIpv6OnlyResponder,
8760    },
8761    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8762    GetIpv6Only {
8763        responder: SocketGetIpv6OnlyResponder,
8764    },
8765    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8766    SetIpv6ReceiveTrafficClass {
8767        value: bool,
8768        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8769    },
8770    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8771    GetIpv6ReceiveTrafficClass {
8772        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8773    },
8774    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8775    SetIpv6TrafficClass {
8776        value: fidl_fuchsia_posix_socket::OptionalUint8,
8777        responder: SocketSetIpv6TrafficClassResponder,
8778    },
8779    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8780    GetIpv6TrafficClass {
8781        responder: SocketGetIpv6TrafficClassResponder,
8782    },
8783    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8784    SetIpv6ReceivePacketInfo {
8785        value: bool,
8786        responder: SocketSetIpv6ReceivePacketInfoResponder,
8787    },
8788    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8789    GetIpv6ReceivePacketInfo {
8790        responder: SocketGetIpv6ReceivePacketInfoResponder,
8791    },
8792    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8793    GetOriginalDestination {
8794        responder: SocketGetOriginalDestinationResponder,
8795    },
8796    Describe {
8797        responder: SocketDescribeResponder,
8798    },
8799    /// Receives a message from the socket.
8800    ///
8801    /// + request `want_addr` request message's source address information to
8802    ///   be returned.
8803    /// + request `data_len` the maximum allowed length of the response data
8804    ///   buffer.
8805    /// + request `want_control` request ancillary data to be returned.
8806    /// + request `flags` flags for the receive request.
8807    /// - response `addr` the message's source address information, if
8808    ///   requested.
8809    /// - response `data` the message.
8810    /// - response `control` control messages, if requested.
8811    /// - response `truncated` indicates whether or not the returned message
8812    ///   was truncated.
8813    RecvMsg {
8814        want_addr: bool,
8815        data_len: u32,
8816        want_control: bool,
8817        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8818        responder: SocketRecvMsgResponder,
8819    },
8820    /// Sends a message on the socket.
8821    ///
8822    /// + request `addr` the address to send the message to. If unset, will
8823    ///   send to the connected peer.
8824    /// + request `data` the message.
8825    /// + request `control` ancillary data.
8826    /// + request `flags` flags for the send request.
8827    SendMsg {
8828        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8829        data: Vec<u8>,
8830        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8831        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8832        responder: SocketSendMsgResponder,
8833    },
8834    /// Retrieves creation information from the socket.
8835    ///
8836    /// - response `domain` the socket's associated domain.
8837    /// - response `proto` the socket's associated protocol.
8838    GetInfo {
8839        responder: SocketGetInfoResponder,
8840    },
8841    /// Set `SOL_IP` -> `IP_HDRINCL`.
8842    SetIpHeaderIncluded {
8843        value: bool,
8844        responder: SocketSetIpHeaderIncludedResponder,
8845    },
8846    /// Get `SOL_IP` -> `IP_HDRINCL`.
8847    GetIpHeaderIncluded {
8848        responder: SocketGetIpHeaderIncludedResponder,
8849    },
8850    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8851    SetIcmpv6Filter {
8852        filter: Icmpv6Filter,
8853        responder: SocketSetIcmpv6FilterResponder,
8854    },
8855    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8856    GetIcmpv6Filter {
8857        responder: SocketGetIcmpv6FilterResponder,
8858    },
8859    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8860    SetIpv6Checksum {
8861        config: Ipv6ChecksumConfiguration,
8862        responder: SocketSetIpv6ChecksumResponder,
8863    },
8864    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8865    GetIpv6Checksum {
8866        responder: SocketGetIpv6ChecksumResponder,
8867    },
8868}
8869
8870impl SocketRequest {
8871    #[allow(irrefutable_let_patterns)]
8872    pub fn into_clone(
8873        self,
8874    ) -> Option<(
8875        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8876        SocketControlHandle,
8877    )> {
8878        if let SocketRequest::Clone { request, control_handle } = self {
8879            Some((request, control_handle))
8880        } else {
8881            None
8882        }
8883    }
8884
8885    #[allow(irrefutable_let_patterns)]
8886    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
8887        if let SocketRequest::Close { responder } = self { Some((responder)) } else { None }
8888    }
8889
8890    #[allow(irrefutable_let_patterns)]
8891    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
8892        if let SocketRequest::Query { responder } = self { Some((responder)) } else { None }
8893    }
8894
8895    #[allow(irrefutable_let_patterns)]
8896    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
8897        if let SocketRequest::SetReuseAddress { value, responder } = self {
8898            Some((value, responder))
8899        } else {
8900            None
8901        }
8902    }
8903
8904    #[allow(irrefutable_let_patterns)]
8905    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
8906        if let SocketRequest::GetReuseAddress { responder } = self {
8907            Some((responder))
8908        } else {
8909            None
8910        }
8911    }
8912
8913    #[allow(irrefutable_let_patterns)]
8914    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
8915        if let SocketRequest::GetError { responder } = self { Some((responder)) } else { None }
8916    }
8917
8918    #[allow(irrefutable_let_patterns)]
8919    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
8920        if let SocketRequest::SetBroadcast { value, responder } = self {
8921            Some((value, responder))
8922        } else {
8923            None
8924        }
8925    }
8926
8927    #[allow(irrefutable_let_patterns)]
8928    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
8929        if let SocketRequest::GetBroadcast { responder } = self { Some((responder)) } else { None }
8930    }
8931
8932    #[allow(irrefutable_let_patterns)]
8933    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
8934        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
8935            Some((value_bytes, responder))
8936        } else {
8937            None
8938        }
8939    }
8940
8941    #[allow(irrefutable_let_patterns)]
8942    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
8943        if let SocketRequest::GetSendBuffer { responder } = self { Some((responder)) } else { None }
8944    }
8945
8946    #[allow(irrefutable_let_patterns)]
8947    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
8948        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
8949            Some((value_bytes, responder))
8950        } else {
8951            None
8952        }
8953    }
8954
8955    #[allow(irrefutable_let_patterns)]
8956    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
8957        if let SocketRequest::GetReceiveBuffer { responder } = self {
8958            Some((responder))
8959        } else {
8960            None
8961        }
8962    }
8963
8964    #[allow(irrefutable_let_patterns)]
8965    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
8966        if let SocketRequest::SetKeepAlive { value, responder } = self {
8967            Some((value, responder))
8968        } else {
8969            None
8970        }
8971    }
8972
8973    #[allow(irrefutable_let_patterns)]
8974    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
8975        if let SocketRequest::GetKeepAlive { responder } = self { Some((responder)) } else { None }
8976    }
8977
8978    #[allow(irrefutable_let_patterns)]
8979    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
8980        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
8981            Some((value, responder))
8982        } else {
8983            None
8984        }
8985    }
8986
8987    #[allow(irrefutable_let_patterns)]
8988    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
8989        if let SocketRequest::GetOutOfBandInline { responder } = self {
8990            Some((responder))
8991        } else {
8992            None
8993        }
8994    }
8995
8996    #[allow(irrefutable_let_patterns)]
8997    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
8998        if let SocketRequest::SetNoCheck { value, responder } = self {
8999            Some((value, responder))
9000        } else {
9001            None
9002        }
9003    }
9004
9005    #[allow(irrefutable_let_patterns)]
9006    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
9007        if let SocketRequest::GetNoCheck { responder } = self { Some((responder)) } else { None }
9008    }
9009
9010    #[allow(irrefutable_let_patterns)]
9011    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
9012        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
9013            Some((linger, length_secs, responder))
9014        } else {
9015            None
9016        }
9017    }
9018
9019    #[allow(irrefutable_let_patterns)]
9020    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
9021        if let SocketRequest::GetLinger { responder } = self { Some((responder)) } else { None }
9022    }
9023
9024    #[allow(irrefutable_let_patterns)]
9025    pub fn into_set_reuse_port2(
9026        self,
9027    ) -> Option<(fidl_fuchsia_posix_socket::ReusePortOption, SocketSetReusePort2Responder)> {
9028        if let SocketRequest::SetReusePort2 { value, responder } = self {
9029            Some((value, responder))
9030        } else {
9031            None
9032        }
9033    }
9034
9035    #[allow(irrefutable_let_patterns)]
9036    pub fn into_set_reuse_port(self) -> Option<(bool, SocketSetReusePortResponder)> {
9037        if let SocketRequest::SetReusePort { value, responder } = self {
9038            Some((value, responder))
9039        } else {
9040            None
9041        }
9042    }
9043
9044    #[allow(irrefutable_let_patterns)]
9045    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
9046        if let SocketRequest::GetReusePort { responder } = self { Some((responder)) } else { None }
9047    }
9048
9049    #[allow(irrefutable_let_patterns)]
9050    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
9051        if let SocketRequest::GetAcceptConn { responder } = self { Some((responder)) } else { None }
9052    }
9053
9054    #[allow(irrefutable_let_patterns)]
9055    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
9056        if let SocketRequest::SetBindToDevice { value, responder } = self {
9057            Some((value, responder))
9058        } else {
9059            None
9060        }
9061    }
9062
9063    #[allow(irrefutable_let_patterns)]
9064    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
9065        if let SocketRequest::GetBindToDevice { responder } = self {
9066            Some((responder))
9067        } else {
9068            None
9069        }
9070    }
9071
9072    #[allow(irrefutable_let_patterns)]
9073    pub fn into_set_bind_to_interface_index(
9074        self,
9075    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
9076        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
9077            Some((value, responder))
9078        } else {
9079            None
9080        }
9081    }
9082
9083    #[allow(irrefutable_let_patterns)]
9084    pub fn into_get_bind_to_interface_index(
9085        self,
9086    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
9087        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
9088            Some((responder))
9089        } else {
9090            None
9091        }
9092    }
9093
9094    #[allow(irrefutable_let_patterns)]
9095    pub fn into_set_timestamp(
9096        self,
9097    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
9098        if let SocketRequest::SetTimestamp { value, responder } = self {
9099            Some((value, responder))
9100        } else {
9101            None
9102        }
9103    }
9104
9105    #[allow(irrefutable_let_patterns)]
9106    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9107        if let SocketRequest::GetTimestamp { responder } = self { Some((responder)) } else { None }
9108    }
9109
9110    #[allow(irrefutable_let_patterns)]
9111    pub fn into_set_mark(
9112        self,
9113    ) -> Option<(
9114        fidl_fuchsia_net::MarkDomain,
9115        fidl_fuchsia_posix_socket::OptionalUint32,
9116        SocketSetMarkResponder,
9117    )> {
9118        if let SocketRequest::SetMark { domain, mark, responder } = self {
9119            Some((domain, mark, responder))
9120        } else {
9121            None
9122        }
9123    }
9124
9125    #[allow(irrefutable_let_patterns)]
9126    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9127        if let SocketRequest::GetMark { domain, responder } = self {
9128            Some((domain, responder))
9129        } else {
9130            None
9131        }
9132    }
9133
9134    #[allow(irrefutable_let_patterns)]
9135    pub fn into_get_cookie(self) -> Option<(SocketGetCookieResponder)> {
9136        if let SocketRequest::GetCookie { responder } = self { Some((responder)) } else { None }
9137    }
9138
9139    #[allow(irrefutable_let_patterns)]
9140    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9141        if let SocketRequest::Bind { addr, responder } = self {
9142            Some((addr, responder))
9143        } else {
9144            None
9145        }
9146    }
9147
9148    #[allow(irrefutable_let_patterns)]
9149    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9150        if let SocketRequest::Connect { addr, responder } = self {
9151            Some((addr, responder))
9152        } else {
9153            None
9154        }
9155    }
9156
9157    #[allow(irrefutable_let_patterns)]
9158    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9159        if let SocketRequest::Disconnect { responder } = self { Some((responder)) } else { None }
9160    }
9161
9162    #[allow(irrefutable_let_patterns)]
9163    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9164        if let SocketRequest::GetSockName { responder } = self { Some((responder)) } else { None }
9165    }
9166
9167    #[allow(irrefutable_let_patterns)]
9168    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9169        if let SocketRequest::GetPeerName { responder } = self { Some((responder)) } else { None }
9170    }
9171
9172    #[allow(irrefutable_let_patterns)]
9173    pub fn into_shutdown(
9174        self,
9175    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9176        if let SocketRequest::Shutdown { mode, responder } = self {
9177            Some((mode, responder))
9178        } else {
9179            None
9180        }
9181    }
9182
9183    #[allow(irrefutable_let_patterns)]
9184    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9185        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9186            Some((value, responder))
9187        } else {
9188            None
9189        }
9190    }
9191
9192    #[allow(irrefutable_let_patterns)]
9193    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9194        if let SocketRequest::GetIpTypeOfService { responder } = self {
9195            Some((responder))
9196        } else {
9197            None
9198        }
9199    }
9200
9201    #[allow(irrefutable_let_patterns)]
9202    pub fn into_set_ip_ttl(
9203        self,
9204    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9205        if let SocketRequest::SetIpTtl { value, responder } = self {
9206            Some((value, responder))
9207        } else {
9208            None
9209        }
9210    }
9211
9212    #[allow(irrefutable_let_patterns)]
9213    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9214        if let SocketRequest::GetIpTtl { responder } = self { Some((responder)) } else { None }
9215    }
9216
9217    #[allow(irrefutable_let_patterns)]
9218    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9219        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9220            Some((value, responder))
9221        } else {
9222            None
9223        }
9224    }
9225
9226    #[allow(irrefutable_let_patterns)]
9227    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9228        if let SocketRequest::GetIpPacketInfo { responder } = self {
9229            Some((responder))
9230        } else {
9231            None
9232        }
9233    }
9234
9235    #[allow(irrefutable_let_patterns)]
9236    pub fn into_set_ip_receive_type_of_service(
9237        self,
9238    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9239        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9240            Some((value, responder))
9241        } else {
9242            None
9243        }
9244    }
9245
9246    #[allow(irrefutable_let_patterns)]
9247    pub fn into_get_ip_receive_type_of_service(
9248        self,
9249    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9250        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9251            Some((responder))
9252        } else {
9253            None
9254        }
9255    }
9256
9257    #[allow(irrefutable_let_patterns)]
9258    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9259        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9260            Some((value, responder))
9261        } else {
9262            None
9263        }
9264    }
9265
9266    #[allow(irrefutable_let_patterns)]
9267    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9268        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9269            Some((responder))
9270        } else {
9271            None
9272        }
9273    }
9274
9275    #[allow(irrefutable_let_patterns)]
9276    pub fn into_set_ip_multicast_interface(
9277        self,
9278    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9279        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9280            Some((iface, address, responder))
9281        } else {
9282            None
9283        }
9284    }
9285
9286    #[allow(irrefutable_let_patterns)]
9287    pub fn into_get_ip_multicast_interface(
9288        self,
9289    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9290        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9291            Some((responder))
9292        } else {
9293            None
9294        }
9295    }
9296
9297    #[allow(irrefutable_let_patterns)]
9298    pub fn into_set_ip_multicast_ttl(
9299        self,
9300    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9301        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9302            Some((value, responder))
9303        } else {
9304            None
9305        }
9306    }
9307
9308    #[allow(irrefutable_let_patterns)]
9309    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9310        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9311            Some((responder))
9312        } else {
9313            None
9314        }
9315    }
9316
9317    #[allow(irrefutable_let_patterns)]
9318    pub fn into_set_ip_multicast_loopback(
9319        self,
9320    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9321        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9322            Some((value, responder))
9323        } else {
9324            None
9325        }
9326    }
9327
9328    #[allow(irrefutable_let_patterns)]
9329    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9330        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9331            Some((responder))
9332        } else {
9333            None
9334        }
9335    }
9336
9337    #[allow(irrefutable_let_patterns)]
9338    pub fn into_add_ip_membership(
9339        self,
9340    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9341    {
9342        if let SocketRequest::AddIpMembership { membership, responder } = self {
9343            Some((membership, responder))
9344        } else {
9345            None
9346        }
9347    }
9348
9349    #[allow(irrefutable_let_patterns)]
9350    pub fn into_drop_ip_membership(
9351        self,
9352    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9353    {
9354        if let SocketRequest::DropIpMembership { membership, responder } = self {
9355            Some((membership, responder))
9356        } else {
9357            None
9358        }
9359    }
9360
9361    #[allow(irrefutable_let_patterns)]
9362    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9363        if let SocketRequest::SetIpTransparent { value, responder } = self {
9364            Some((value, responder))
9365        } else {
9366            None
9367        }
9368    }
9369
9370    #[allow(irrefutable_let_patterns)]
9371    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9372        if let SocketRequest::GetIpTransparent { responder } = self {
9373            Some((responder))
9374        } else {
9375            None
9376        }
9377    }
9378
9379    #[allow(irrefutable_let_patterns)]
9380    pub fn into_set_ip_receive_original_destination_address(
9381        self,
9382    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9383        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9384            Some((value, responder))
9385        } else {
9386            None
9387        }
9388    }
9389
9390    #[allow(irrefutable_let_patterns)]
9391    pub fn into_get_ip_receive_original_destination_address(
9392        self,
9393    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9394        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9395            Some((responder))
9396        } else {
9397            None
9398        }
9399    }
9400
9401    #[allow(irrefutable_let_patterns)]
9402    pub fn into_add_ipv6_membership(
9403        self,
9404    ) -> Option<(
9405        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9406        SocketAddIpv6MembershipResponder,
9407    )> {
9408        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9409            Some((membership, responder))
9410        } else {
9411            None
9412        }
9413    }
9414
9415    #[allow(irrefutable_let_patterns)]
9416    pub fn into_drop_ipv6_membership(
9417        self,
9418    ) -> Option<(
9419        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9420        SocketDropIpv6MembershipResponder,
9421    )> {
9422        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9423            Some((membership, responder))
9424        } else {
9425            None
9426        }
9427    }
9428
9429    #[allow(irrefutable_let_patterns)]
9430    pub fn into_set_ipv6_multicast_interface(
9431        self,
9432    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9433        if let SocketRequest::SetIpv6MulticastInterface { value, responder } = self {
9434            Some((value, responder))
9435        } else {
9436            None
9437        }
9438    }
9439
9440    #[allow(irrefutable_let_patterns)]
9441    pub fn into_get_ipv6_multicast_interface(
9442        self,
9443    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9444        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9445            Some((responder))
9446        } else {
9447            None
9448        }
9449    }
9450
9451    #[allow(irrefutable_let_patterns)]
9452    pub fn into_set_ipv6_unicast_hops(
9453        self,
9454    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9455        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9456            Some((value, responder))
9457        } else {
9458            None
9459        }
9460    }
9461
9462    #[allow(irrefutable_let_patterns)]
9463    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9464        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9465            Some((responder))
9466        } else {
9467            None
9468        }
9469    }
9470
9471    #[allow(irrefutable_let_patterns)]
9472    pub fn into_set_ipv6_receive_hop_limit(
9473        self,
9474    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9475        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9476            Some((value, responder))
9477        } else {
9478            None
9479        }
9480    }
9481
9482    #[allow(irrefutable_let_patterns)]
9483    pub fn into_get_ipv6_receive_hop_limit(
9484        self,
9485    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9486        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9487            Some((responder))
9488        } else {
9489            None
9490        }
9491    }
9492
9493    #[allow(irrefutable_let_patterns)]
9494    pub fn into_set_ipv6_multicast_hops(
9495        self,
9496    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9497    {
9498        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9499            Some((value, responder))
9500        } else {
9501            None
9502        }
9503    }
9504
9505    #[allow(irrefutable_let_patterns)]
9506    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9507        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9508            Some((responder))
9509        } else {
9510            None
9511        }
9512    }
9513
9514    #[allow(irrefutable_let_patterns)]
9515    pub fn into_set_ipv6_multicast_loopback(
9516        self,
9517    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9518        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9519            Some((value, responder))
9520        } else {
9521            None
9522        }
9523    }
9524
9525    #[allow(irrefutable_let_patterns)]
9526    pub fn into_get_ipv6_multicast_loopback(
9527        self,
9528    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9529        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9530            Some((responder))
9531        } else {
9532            None
9533        }
9534    }
9535
9536    #[allow(irrefutable_let_patterns)]
9537    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9538        if let SocketRequest::SetIpv6Only { value, responder } = self {
9539            Some((value, responder))
9540        } else {
9541            None
9542        }
9543    }
9544
9545    #[allow(irrefutable_let_patterns)]
9546    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9547        if let SocketRequest::GetIpv6Only { responder } = self { Some((responder)) } else { None }
9548    }
9549
9550    #[allow(irrefutable_let_patterns)]
9551    pub fn into_set_ipv6_receive_traffic_class(
9552        self,
9553    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9554        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9555            Some((value, responder))
9556        } else {
9557            None
9558        }
9559    }
9560
9561    #[allow(irrefutable_let_patterns)]
9562    pub fn into_get_ipv6_receive_traffic_class(
9563        self,
9564    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9565        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9566            Some((responder))
9567        } else {
9568            None
9569        }
9570    }
9571
9572    #[allow(irrefutable_let_patterns)]
9573    pub fn into_set_ipv6_traffic_class(
9574        self,
9575    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9576    {
9577        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9578            Some((value, responder))
9579        } else {
9580            None
9581        }
9582    }
9583
9584    #[allow(irrefutable_let_patterns)]
9585    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9586        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9587            Some((responder))
9588        } else {
9589            None
9590        }
9591    }
9592
9593    #[allow(irrefutable_let_patterns)]
9594    pub fn into_set_ipv6_receive_packet_info(
9595        self,
9596    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9597        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9598            Some((value, responder))
9599        } else {
9600            None
9601        }
9602    }
9603
9604    #[allow(irrefutable_let_patterns)]
9605    pub fn into_get_ipv6_receive_packet_info(
9606        self,
9607    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9608        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9609            Some((responder))
9610        } else {
9611            None
9612        }
9613    }
9614
9615    #[allow(irrefutable_let_patterns)]
9616    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9617        if let SocketRequest::GetOriginalDestination { responder } = self {
9618            Some((responder))
9619        } else {
9620            None
9621        }
9622    }
9623
9624    #[allow(irrefutable_let_patterns)]
9625    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9626        if let SocketRequest::Describe { responder } = self { Some((responder)) } else { None }
9627    }
9628
9629    #[allow(irrefutable_let_patterns)]
9630    pub fn into_recv_msg(
9631        self,
9632    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9633    {
9634        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9635        {
9636            Some((want_addr, data_len, want_control, flags, responder))
9637        } else {
9638            None
9639        }
9640    }
9641
9642    #[allow(irrefutable_let_patterns)]
9643    pub fn into_send_msg(
9644        self,
9645    ) -> Option<(
9646        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9647        Vec<u8>,
9648        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9649        fidl_fuchsia_posix_socket::SendMsgFlags,
9650        SocketSendMsgResponder,
9651    )> {
9652        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9653            Some((addr, data, control, flags, responder))
9654        } else {
9655            None
9656        }
9657    }
9658
9659    #[allow(irrefutable_let_patterns)]
9660    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9661        if let SocketRequest::GetInfo { responder } = self { Some((responder)) } else { None }
9662    }
9663
9664    #[allow(irrefutable_let_patterns)]
9665    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9666        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9667            Some((value, responder))
9668        } else {
9669            None
9670        }
9671    }
9672
9673    #[allow(irrefutable_let_patterns)]
9674    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9675        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9676            Some((responder))
9677        } else {
9678            None
9679        }
9680    }
9681
9682    #[allow(irrefutable_let_patterns)]
9683    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9684        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9685            Some((filter, responder))
9686        } else {
9687            None
9688        }
9689    }
9690
9691    #[allow(irrefutable_let_patterns)]
9692    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9693        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9694            Some((responder))
9695        } else {
9696            None
9697        }
9698    }
9699
9700    #[allow(irrefutable_let_patterns)]
9701    pub fn into_set_ipv6_checksum(
9702        self,
9703    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9704        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9705            Some((config, responder))
9706        } else {
9707            None
9708        }
9709    }
9710
9711    #[allow(irrefutable_let_patterns)]
9712    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9713        if let SocketRequest::GetIpv6Checksum { responder } = self {
9714            Some((responder))
9715        } else {
9716            None
9717        }
9718    }
9719
9720    /// Name of the method defined in FIDL
9721    pub fn method_name(&self) -> &'static str {
9722        match *self {
9723            SocketRequest::Clone { .. } => "clone",
9724            SocketRequest::Close { .. } => "close",
9725            SocketRequest::Query { .. } => "query",
9726            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9727            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9728            SocketRequest::GetError { .. } => "get_error",
9729            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9730            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9731            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9732            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9733            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9734            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9735            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9736            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9737            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9738            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9739            SocketRequest::SetNoCheck { .. } => "set_no_check",
9740            SocketRequest::GetNoCheck { .. } => "get_no_check",
9741            SocketRequest::SetLinger { .. } => "set_linger",
9742            SocketRequest::GetLinger { .. } => "get_linger",
9743            SocketRequest::SetReusePort2 { .. } => "set_reuse_port2",
9744            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9745            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9746            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9747            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9748            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9749            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9750            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9751            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9752            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9753            SocketRequest::SetMark { .. } => "set_mark",
9754            SocketRequest::GetMark { .. } => "get_mark",
9755            SocketRequest::GetCookie { .. } => "get_cookie",
9756            SocketRequest::Bind { .. } => "bind",
9757            SocketRequest::Connect { .. } => "connect",
9758            SocketRequest::Disconnect { .. } => "disconnect",
9759            SocketRequest::GetSockName { .. } => "get_sock_name",
9760            SocketRequest::GetPeerName { .. } => "get_peer_name",
9761            SocketRequest::Shutdown { .. } => "shutdown",
9762            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9763            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9764            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9765            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9766            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9767            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9768            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9769            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9770            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9771            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9772            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9773            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9774            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9775            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9776            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9777            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9778            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9779            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9780            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9781            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9782            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9783                "set_ip_receive_original_destination_address"
9784            }
9785            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9786                "get_ip_receive_original_destination_address"
9787            }
9788            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9789            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9790            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9791            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9792            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9793            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9794            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9795            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9796            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9797            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9798            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9799            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9800            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9801            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9802            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9803            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9804            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9805            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9806            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9807            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9808            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9809            SocketRequest::Describe { .. } => "describe",
9810            SocketRequest::RecvMsg { .. } => "recv_msg",
9811            SocketRequest::SendMsg { .. } => "send_msg",
9812            SocketRequest::GetInfo { .. } => "get_info",
9813            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9814            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9815            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9816            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9817            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9818            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9819        }
9820    }
9821}
9822
9823#[derive(Debug, Clone)]
9824pub struct SocketControlHandle {
9825    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9826}
9827
9828impl fidl::endpoints::ControlHandle for SocketControlHandle {
9829    fn shutdown(&self) {
9830        self.inner.shutdown()
9831    }
9832    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9833        self.inner.shutdown_with_epitaph(status)
9834    }
9835
9836    fn is_closed(&self) -> bool {
9837        self.inner.channel().is_closed()
9838    }
9839    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9840        self.inner.channel().on_closed()
9841    }
9842
9843    #[cfg(target_os = "fuchsia")]
9844    fn signal_peer(
9845        &self,
9846        clear_mask: zx::Signals,
9847        set_mask: zx::Signals,
9848    ) -> Result<(), zx_status::Status> {
9849        use fidl::Peered;
9850        self.inner.channel().signal_peer(clear_mask, set_mask)
9851    }
9852}
9853
9854impl SocketControlHandle {}
9855
9856#[must_use = "FIDL methods require a response to be sent"]
9857#[derive(Debug)]
9858pub struct SocketCloseResponder {
9859    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9860    tx_id: u32,
9861}
9862
9863/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9864/// if the responder is dropped without sending a response, so that the client
9865/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9866impl std::ops::Drop for SocketCloseResponder {
9867    fn drop(&mut self) {
9868        self.control_handle.shutdown();
9869        // Safety: drops once, never accessed again
9870        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9871    }
9872}
9873
9874impl fidl::endpoints::Responder for SocketCloseResponder {
9875    type ControlHandle = SocketControlHandle;
9876
9877    fn control_handle(&self) -> &SocketControlHandle {
9878        &self.control_handle
9879    }
9880
9881    fn drop_without_shutdown(mut self) {
9882        // Safety: drops once, never accessed again due to mem::forget
9883        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9884        // Prevent Drop from running (which would shut down the channel)
9885        std::mem::forget(self);
9886    }
9887}
9888
9889impl SocketCloseResponder {
9890    /// Sends a response to the FIDL transaction.
9891    ///
9892    /// Sets the channel to shutdown if an error occurs.
9893    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9894        let _result = self.send_raw(result);
9895        if _result.is_err() {
9896            self.control_handle.shutdown();
9897        }
9898        self.drop_without_shutdown();
9899        _result
9900    }
9901
9902    /// Similar to "send" but does not shutdown the channel if an error occurs.
9903    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9904        let _result = self.send_raw(result);
9905        self.drop_without_shutdown();
9906        _result
9907    }
9908
9909    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9910        self.control_handle
9911            .inner
9912            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
9913                result,
9914                self.tx_id,
9915                0x5ac5d459ad7f657e,
9916                fidl::encoding::DynamicFlags::empty(),
9917            )
9918    }
9919}
9920
9921#[must_use = "FIDL methods require a response to be sent"]
9922#[derive(Debug)]
9923pub struct SocketQueryResponder {
9924    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9925    tx_id: u32,
9926}
9927
9928/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9929/// if the responder is dropped without sending a response, so that the client
9930/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9931impl std::ops::Drop for SocketQueryResponder {
9932    fn drop(&mut self) {
9933        self.control_handle.shutdown();
9934        // Safety: drops once, never accessed again
9935        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9936    }
9937}
9938
9939impl fidl::endpoints::Responder for SocketQueryResponder {
9940    type ControlHandle = SocketControlHandle;
9941
9942    fn control_handle(&self) -> &SocketControlHandle {
9943        &self.control_handle
9944    }
9945
9946    fn drop_without_shutdown(mut self) {
9947        // Safety: drops once, never accessed again due to mem::forget
9948        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9949        // Prevent Drop from running (which would shut down the channel)
9950        std::mem::forget(self);
9951    }
9952}
9953
9954impl SocketQueryResponder {
9955    /// Sends a response to the FIDL transaction.
9956    ///
9957    /// Sets the channel to shutdown if an error occurs.
9958    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9959        let _result = self.send_raw(protocol);
9960        if _result.is_err() {
9961            self.control_handle.shutdown();
9962        }
9963        self.drop_without_shutdown();
9964        _result
9965    }
9966
9967    /// Similar to "send" but does not shutdown the channel if an error occurs.
9968    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9969        let _result = self.send_raw(protocol);
9970        self.drop_without_shutdown();
9971        _result
9972    }
9973
9974    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9975        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
9976            (protocol,),
9977            self.tx_id,
9978            0x2658edee9decfc06,
9979            fidl::encoding::DynamicFlags::empty(),
9980        )
9981    }
9982}
9983
9984#[must_use = "FIDL methods require a response to be sent"]
9985#[derive(Debug)]
9986pub struct SocketSetReuseAddressResponder {
9987    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9988    tx_id: u32,
9989}
9990
9991/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9992/// if the responder is dropped without sending a response, so that the client
9993/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9994impl std::ops::Drop for SocketSetReuseAddressResponder {
9995    fn drop(&mut self) {
9996        self.control_handle.shutdown();
9997        // Safety: drops once, never accessed again
9998        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9999    }
10000}
10001
10002impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
10003    type ControlHandle = SocketControlHandle;
10004
10005    fn control_handle(&self) -> &SocketControlHandle {
10006        &self.control_handle
10007    }
10008
10009    fn drop_without_shutdown(mut self) {
10010        // Safety: drops once, never accessed again due to mem::forget
10011        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10012        // Prevent Drop from running (which would shut down the channel)
10013        std::mem::forget(self);
10014    }
10015}
10016
10017impl SocketSetReuseAddressResponder {
10018    /// Sends a response to the FIDL transaction.
10019    ///
10020    /// Sets the channel to shutdown if an error occurs.
10021    pub fn send(
10022        self,
10023        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10024    ) -> Result<(), fidl::Error> {
10025        let _result = self.send_raw(result);
10026        if _result.is_err() {
10027            self.control_handle.shutdown();
10028        }
10029        self.drop_without_shutdown();
10030        _result
10031    }
10032
10033    /// Similar to "send" but does not shutdown the channel if an error occurs.
10034    pub fn send_no_shutdown_on_err(
10035        self,
10036        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10037    ) -> Result<(), fidl::Error> {
10038        let _result = self.send_raw(result);
10039        self.drop_without_shutdown();
10040        _result
10041    }
10042
10043    fn send_raw(
10044        &self,
10045        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10046    ) -> Result<(), fidl::Error> {
10047        self.control_handle.inner.send::<fidl::encoding::ResultType<
10048            fidl::encoding::EmptyStruct,
10049            fidl_fuchsia_posix::Errno,
10050        >>(
10051            result,
10052            self.tx_id,
10053            0x1fd74ee8b9a4a876,
10054            fidl::encoding::DynamicFlags::empty(),
10055        )
10056    }
10057}
10058
10059#[must_use = "FIDL methods require a response to be sent"]
10060#[derive(Debug)]
10061pub struct SocketGetReuseAddressResponder {
10062    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10063    tx_id: u32,
10064}
10065
10066/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10067/// if the responder is dropped without sending a response, so that the client
10068/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10069impl std::ops::Drop for SocketGetReuseAddressResponder {
10070    fn drop(&mut self) {
10071        self.control_handle.shutdown();
10072        // Safety: drops once, never accessed again
10073        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10074    }
10075}
10076
10077impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
10078    type ControlHandle = SocketControlHandle;
10079
10080    fn control_handle(&self) -> &SocketControlHandle {
10081        &self.control_handle
10082    }
10083
10084    fn drop_without_shutdown(mut self) {
10085        // Safety: drops once, never accessed again due to mem::forget
10086        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10087        // Prevent Drop from running (which would shut down the channel)
10088        std::mem::forget(self);
10089    }
10090}
10091
10092impl SocketGetReuseAddressResponder {
10093    /// Sends a response to the FIDL transaction.
10094    ///
10095    /// Sets the channel to shutdown if an error occurs.
10096    pub fn send(
10097        self,
10098        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10099    ) -> Result<(), fidl::Error> {
10100        let _result = self.send_raw(result);
10101        if _result.is_err() {
10102            self.control_handle.shutdown();
10103        }
10104        self.drop_without_shutdown();
10105        _result
10106    }
10107
10108    /// Similar to "send" but does not shutdown the channel if an error occurs.
10109    pub fn send_no_shutdown_on_err(
10110        self,
10111        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10112    ) -> Result<(), fidl::Error> {
10113        let _result = self.send_raw(result);
10114        self.drop_without_shutdown();
10115        _result
10116    }
10117
10118    fn send_raw(
10119        &self,
10120        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10121    ) -> Result<(), fidl::Error> {
10122        self.control_handle.inner.send::<fidl::encoding::ResultType<
10123            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10124            fidl_fuchsia_posix::Errno,
10125        >>(
10126            result.map(|value| (value,)),
10127            self.tx_id,
10128            0x67b7206b8d1bc0a5,
10129            fidl::encoding::DynamicFlags::empty(),
10130        )
10131    }
10132}
10133
10134#[must_use = "FIDL methods require a response to be sent"]
10135#[derive(Debug)]
10136pub struct SocketGetErrorResponder {
10137    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10138    tx_id: u32,
10139}
10140
10141/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10142/// if the responder is dropped without sending a response, so that the client
10143/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10144impl std::ops::Drop for SocketGetErrorResponder {
10145    fn drop(&mut self) {
10146        self.control_handle.shutdown();
10147        // Safety: drops once, never accessed again
10148        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10149    }
10150}
10151
10152impl fidl::endpoints::Responder for SocketGetErrorResponder {
10153    type ControlHandle = SocketControlHandle;
10154
10155    fn control_handle(&self) -> &SocketControlHandle {
10156        &self.control_handle
10157    }
10158
10159    fn drop_without_shutdown(mut self) {
10160        // Safety: drops once, never accessed again due to mem::forget
10161        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10162        // Prevent Drop from running (which would shut down the channel)
10163        std::mem::forget(self);
10164    }
10165}
10166
10167impl SocketGetErrorResponder {
10168    /// Sends a response to the FIDL transaction.
10169    ///
10170    /// Sets the channel to shutdown if an error occurs.
10171    pub fn send(
10172        self,
10173        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10174    ) -> Result<(), fidl::Error> {
10175        let _result = self.send_raw(result);
10176        if _result.is_err() {
10177            self.control_handle.shutdown();
10178        }
10179        self.drop_without_shutdown();
10180        _result
10181    }
10182
10183    /// Similar to "send" but does not shutdown the channel if an error occurs.
10184    pub fn send_no_shutdown_on_err(
10185        self,
10186        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10187    ) -> Result<(), fidl::Error> {
10188        let _result = self.send_raw(result);
10189        self.drop_without_shutdown();
10190        _result
10191    }
10192
10193    fn send_raw(
10194        &self,
10195        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10196    ) -> Result<(), fidl::Error> {
10197        self.control_handle.inner.send::<fidl::encoding::ResultType<
10198            fidl::encoding::EmptyStruct,
10199            fidl_fuchsia_posix::Errno,
10200        >>(
10201            result,
10202            self.tx_id,
10203            0x5aad39b33e5f6ebb,
10204            fidl::encoding::DynamicFlags::empty(),
10205        )
10206    }
10207}
10208
10209#[must_use = "FIDL methods require a response to be sent"]
10210#[derive(Debug)]
10211pub struct SocketSetBroadcastResponder {
10212    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10213    tx_id: u32,
10214}
10215
10216/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10217/// if the responder is dropped without sending a response, so that the client
10218/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10219impl std::ops::Drop for SocketSetBroadcastResponder {
10220    fn drop(&mut self) {
10221        self.control_handle.shutdown();
10222        // Safety: drops once, never accessed again
10223        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10224    }
10225}
10226
10227impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10228    type ControlHandle = SocketControlHandle;
10229
10230    fn control_handle(&self) -> &SocketControlHandle {
10231        &self.control_handle
10232    }
10233
10234    fn drop_without_shutdown(mut self) {
10235        // Safety: drops once, never accessed again due to mem::forget
10236        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10237        // Prevent Drop from running (which would shut down the channel)
10238        std::mem::forget(self);
10239    }
10240}
10241
10242impl SocketSetBroadcastResponder {
10243    /// Sends a response to the FIDL transaction.
10244    ///
10245    /// Sets the channel to shutdown if an error occurs.
10246    pub fn send(
10247        self,
10248        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10249    ) -> Result<(), fidl::Error> {
10250        let _result = self.send_raw(result);
10251        if _result.is_err() {
10252            self.control_handle.shutdown();
10253        }
10254        self.drop_without_shutdown();
10255        _result
10256    }
10257
10258    /// Similar to "send" but does not shutdown the channel if an error occurs.
10259    pub fn send_no_shutdown_on_err(
10260        self,
10261        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10262    ) -> Result<(), fidl::Error> {
10263        let _result = self.send_raw(result);
10264        self.drop_without_shutdown();
10265        _result
10266    }
10267
10268    fn send_raw(
10269        &self,
10270        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10271    ) -> Result<(), fidl::Error> {
10272        self.control_handle.inner.send::<fidl::encoding::ResultType<
10273            fidl::encoding::EmptyStruct,
10274            fidl_fuchsia_posix::Errno,
10275        >>(
10276            result,
10277            self.tx_id,
10278            0x6023e081ce3cd947,
10279            fidl::encoding::DynamicFlags::empty(),
10280        )
10281    }
10282}
10283
10284#[must_use = "FIDL methods require a response to be sent"]
10285#[derive(Debug)]
10286pub struct SocketGetBroadcastResponder {
10287    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10288    tx_id: u32,
10289}
10290
10291/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10292/// if the responder is dropped without sending a response, so that the client
10293/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10294impl std::ops::Drop for SocketGetBroadcastResponder {
10295    fn drop(&mut self) {
10296        self.control_handle.shutdown();
10297        // Safety: drops once, never accessed again
10298        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10299    }
10300}
10301
10302impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10303    type ControlHandle = SocketControlHandle;
10304
10305    fn control_handle(&self) -> &SocketControlHandle {
10306        &self.control_handle
10307    }
10308
10309    fn drop_without_shutdown(mut self) {
10310        // Safety: drops once, never accessed again due to mem::forget
10311        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10312        // Prevent Drop from running (which would shut down the channel)
10313        std::mem::forget(self);
10314    }
10315}
10316
10317impl SocketGetBroadcastResponder {
10318    /// Sends a response to the FIDL transaction.
10319    ///
10320    /// Sets the channel to shutdown if an error occurs.
10321    pub fn send(
10322        self,
10323        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10324    ) -> Result<(), fidl::Error> {
10325        let _result = self.send_raw(result);
10326        if _result.is_err() {
10327            self.control_handle.shutdown();
10328        }
10329        self.drop_without_shutdown();
10330        _result
10331    }
10332
10333    /// Similar to "send" but does not shutdown the channel if an error occurs.
10334    pub fn send_no_shutdown_on_err(
10335        self,
10336        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10337    ) -> Result<(), fidl::Error> {
10338        let _result = self.send_raw(result);
10339        self.drop_without_shutdown();
10340        _result
10341    }
10342
10343    fn send_raw(
10344        &self,
10345        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10346    ) -> Result<(), fidl::Error> {
10347        self.control_handle.inner.send::<fidl::encoding::ResultType<
10348            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10349            fidl_fuchsia_posix::Errno,
10350        >>(
10351            result.map(|value| (value,)),
10352            self.tx_id,
10353            0x68796fc556f9780d,
10354            fidl::encoding::DynamicFlags::empty(),
10355        )
10356    }
10357}
10358
10359#[must_use = "FIDL methods require a response to be sent"]
10360#[derive(Debug)]
10361pub struct SocketSetSendBufferResponder {
10362    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10363    tx_id: u32,
10364}
10365
10366/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10367/// if the responder is dropped without sending a response, so that the client
10368/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10369impl std::ops::Drop for SocketSetSendBufferResponder {
10370    fn drop(&mut self) {
10371        self.control_handle.shutdown();
10372        // Safety: drops once, never accessed again
10373        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10374    }
10375}
10376
10377impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10378    type ControlHandle = SocketControlHandle;
10379
10380    fn control_handle(&self) -> &SocketControlHandle {
10381        &self.control_handle
10382    }
10383
10384    fn drop_without_shutdown(mut self) {
10385        // Safety: drops once, never accessed again due to mem::forget
10386        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10387        // Prevent Drop from running (which would shut down the channel)
10388        std::mem::forget(self);
10389    }
10390}
10391
10392impl SocketSetSendBufferResponder {
10393    /// Sends a response to the FIDL transaction.
10394    ///
10395    /// Sets the channel to shutdown if an error occurs.
10396    pub fn send(
10397        self,
10398        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10399    ) -> Result<(), fidl::Error> {
10400        let _result = self.send_raw(result);
10401        if _result.is_err() {
10402            self.control_handle.shutdown();
10403        }
10404        self.drop_without_shutdown();
10405        _result
10406    }
10407
10408    /// Similar to "send" but does not shutdown the channel if an error occurs.
10409    pub fn send_no_shutdown_on_err(
10410        self,
10411        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10412    ) -> Result<(), fidl::Error> {
10413        let _result = self.send_raw(result);
10414        self.drop_without_shutdown();
10415        _result
10416    }
10417
10418    fn send_raw(
10419        &self,
10420        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10421    ) -> Result<(), fidl::Error> {
10422        self.control_handle.inner.send::<fidl::encoding::ResultType<
10423            fidl::encoding::EmptyStruct,
10424            fidl_fuchsia_posix::Errno,
10425        >>(
10426            result,
10427            self.tx_id,
10428            0x756eac32d73a7a70,
10429            fidl::encoding::DynamicFlags::empty(),
10430        )
10431    }
10432}
10433
10434#[must_use = "FIDL methods require a response to be sent"]
10435#[derive(Debug)]
10436pub struct SocketGetSendBufferResponder {
10437    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10438    tx_id: u32,
10439}
10440
10441/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10442/// if the responder is dropped without sending a response, so that the client
10443/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10444impl std::ops::Drop for SocketGetSendBufferResponder {
10445    fn drop(&mut self) {
10446        self.control_handle.shutdown();
10447        // Safety: drops once, never accessed again
10448        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10449    }
10450}
10451
10452impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10453    type ControlHandle = SocketControlHandle;
10454
10455    fn control_handle(&self) -> &SocketControlHandle {
10456        &self.control_handle
10457    }
10458
10459    fn drop_without_shutdown(mut self) {
10460        // Safety: drops once, never accessed again due to mem::forget
10461        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10462        // Prevent Drop from running (which would shut down the channel)
10463        std::mem::forget(self);
10464    }
10465}
10466
10467impl SocketGetSendBufferResponder {
10468    /// Sends a response to the FIDL transaction.
10469    ///
10470    /// Sets the channel to shutdown if an error occurs.
10471    pub fn send(
10472        self,
10473        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10474    ) -> Result<(), fidl::Error> {
10475        let _result = self.send_raw(result);
10476        if _result.is_err() {
10477            self.control_handle.shutdown();
10478        }
10479        self.drop_without_shutdown();
10480        _result
10481    }
10482
10483    /// Similar to "send" but does not shutdown the channel if an error occurs.
10484    pub fn send_no_shutdown_on_err(
10485        self,
10486        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10487    ) -> Result<(), fidl::Error> {
10488        let _result = self.send_raw(result);
10489        self.drop_without_shutdown();
10490        _result
10491    }
10492
10493    fn send_raw(
10494        &self,
10495        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10496    ) -> Result<(), fidl::Error> {
10497        self.control_handle.inner.send::<fidl::encoding::ResultType<
10498            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10499            fidl_fuchsia_posix::Errno,
10500        >>(
10501            result.map(|value_bytes| (value_bytes,)),
10502            self.tx_id,
10503            0x78a52fd9c7b2410b,
10504            fidl::encoding::DynamicFlags::empty(),
10505        )
10506    }
10507}
10508
10509#[must_use = "FIDL methods require a response to be sent"]
10510#[derive(Debug)]
10511pub struct SocketSetReceiveBufferResponder {
10512    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10513    tx_id: u32,
10514}
10515
10516/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10517/// if the responder is dropped without sending a response, so that the client
10518/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10519impl std::ops::Drop for SocketSetReceiveBufferResponder {
10520    fn drop(&mut self) {
10521        self.control_handle.shutdown();
10522        // Safety: drops once, never accessed again
10523        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10524    }
10525}
10526
10527impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10528    type ControlHandle = SocketControlHandle;
10529
10530    fn control_handle(&self) -> &SocketControlHandle {
10531        &self.control_handle
10532    }
10533
10534    fn drop_without_shutdown(mut self) {
10535        // Safety: drops once, never accessed again due to mem::forget
10536        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10537        // Prevent Drop from running (which would shut down the channel)
10538        std::mem::forget(self);
10539    }
10540}
10541
10542impl SocketSetReceiveBufferResponder {
10543    /// Sends a response to the FIDL transaction.
10544    ///
10545    /// Sets the channel to shutdown if an error occurs.
10546    pub fn send(
10547        self,
10548        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10549    ) -> Result<(), fidl::Error> {
10550        let _result = self.send_raw(result);
10551        if _result.is_err() {
10552            self.control_handle.shutdown();
10553        }
10554        self.drop_without_shutdown();
10555        _result
10556    }
10557
10558    /// Similar to "send" but does not shutdown the channel if an error occurs.
10559    pub fn send_no_shutdown_on_err(
10560        self,
10561        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10562    ) -> Result<(), fidl::Error> {
10563        let _result = self.send_raw(result);
10564        self.drop_without_shutdown();
10565        _result
10566    }
10567
10568    fn send_raw(
10569        &self,
10570        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10571    ) -> Result<(), fidl::Error> {
10572        self.control_handle.inner.send::<fidl::encoding::ResultType<
10573            fidl::encoding::EmptyStruct,
10574            fidl_fuchsia_posix::Errno,
10575        >>(
10576            result,
10577            self.tx_id,
10578            0x6b0cf2f1919c7001,
10579            fidl::encoding::DynamicFlags::empty(),
10580        )
10581    }
10582}
10583
10584#[must_use = "FIDL methods require a response to be sent"]
10585#[derive(Debug)]
10586pub struct SocketGetReceiveBufferResponder {
10587    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10588    tx_id: u32,
10589}
10590
10591/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10592/// if the responder is dropped without sending a response, so that the client
10593/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10594impl std::ops::Drop for SocketGetReceiveBufferResponder {
10595    fn drop(&mut self) {
10596        self.control_handle.shutdown();
10597        // Safety: drops once, never accessed again
10598        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10599    }
10600}
10601
10602impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10603    type ControlHandle = SocketControlHandle;
10604
10605    fn control_handle(&self) -> &SocketControlHandle {
10606        &self.control_handle
10607    }
10608
10609    fn drop_without_shutdown(mut self) {
10610        // Safety: drops once, never accessed again due to mem::forget
10611        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10612        // Prevent Drop from running (which would shut down the channel)
10613        std::mem::forget(self);
10614    }
10615}
10616
10617impl SocketGetReceiveBufferResponder {
10618    /// Sends a response to the FIDL transaction.
10619    ///
10620    /// Sets the channel to shutdown if an error occurs.
10621    pub fn send(
10622        self,
10623        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10624    ) -> Result<(), fidl::Error> {
10625        let _result = self.send_raw(result);
10626        if _result.is_err() {
10627            self.control_handle.shutdown();
10628        }
10629        self.drop_without_shutdown();
10630        _result
10631    }
10632
10633    /// Similar to "send" but does not shutdown the channel if an error occurs.
10634    pub fn send_no_shutdown_on_err(
10635        self,
10636        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10637    ) -> Result<(), fidl::Error> {
10638        let _result = self.send_raw(result);
10639        self.drop_without_shutdown();
10640        _result
10641    }
10642
10643    fn send_raw(
10644        &self,
10645        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10646    ) -> Result<(), fidl::Error> {
10647        self.control_handle.inner.send::<fidl::encoding::ResultType<
10648            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10649            fidl_fuchsia_posix::Errno,
10650        >>(
10651            result.map(|value_bytes| (value_bytes,)),
10652            self.tx_id,
10653            0x14c1a4b64f709e5c,
10654            fidl::encoding::DynamicFlags::empty(),
10655        )
10656    }
10657}
10658
10659#[must_use = "FIDL methods require a response to be sent"]
10660#[derive(Debug)]
10661pub struct SocketSetKeepAliveResponder {
10662    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10663    tx_id: u32,
10664}
10665
10666/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10667/// if the responder is dropped without sending a response, so that the client
10668/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10669impl std::ops::Drop for SocketSetKeepAliveResponder {
10670    fn drop(&mut self) {
10671        self.control_handle.shutdown();
10672        // Safety: drops once, never accessed again
10673        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10674    }
10675}
10676
10677impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10678    type ControlHandle = SocketControlHandle;
10679
10680    fn control_handle(&self) -> &SocketControlHandle {
10681        &self.control_handle
10682    }
10683
10684    fn drop_without_shutdown(mut self) {
10685        // Safety: drops once, never accessed again due to mem::forget
10686        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10687        // Prevent Drop from running (which would shut down the channel)
10688        std::mem::forget(self);
10689    }
10690}
10691
10692impl SocketSetKeepAliveResponder {
10693    /// Sends a response to the FIDL transaction.
10694    ///
10695    /// Sets the channel to shutdown if an error occurs.
10696    pub fn send(
10697        self,
10698        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10699    ) -> Result<(), fidl::Error> {
10700        let _result = self.send_raw(result);
10701        if _result.is_err() {
10702            self.control_handle.shutdown();
10703        }
10704        self.drop_without_shutdown();
10705        _result
10706    }
10707
10708    /// Similar to "send" but does not shutdown the channel if an error occurs.
10709    pub fn send_no_shutdown_on_err(
10710        self,
10711        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10712    ) -> Result<(), fidl::Error> {
10713        let _result = self.send_raw(result);
10714        self.drop_without_shutdown();
10715        _result
10716    }
10717
10718    fn send_raw(
10719        &self,
10720        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10721    ) -> Result<(), fidl::Error> {
10722        self.control_handle.inner.send::<fidl::encoding::ResultType<
10723            fidl::encoding::EmptyStruct,
10724            fidl_fuchsia_posix::Errno,
10725        >>(
10726            result,
10727            self.tx_id,
10728            0x572df8f0b920d2c7,
10729            fidl::encoding::DynamicFlags::empty(),
10730        )
10731    }
10732}
10733
10734#[must_use = "FIDL methods require a response to be sent"]
10735#[derive(Debug)]
10736pub struct SocketGetKeepAliveResponder {
10737    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10738    tx_id: u32,
10739}
10740
10741/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10742/// if the responder is dropped without sending a response, so that the client
10743/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10744impl std::ops::Drop for SocketGetKeepAliveResponder {
10745    fn drop(&mut self) {
10746        self.control_handle.shutdown();
10747        // Safety: drops once, never accessed again
10748        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10749    }
10750}
10751
10752impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10753    type ControlHandle = SocketControlHandle;
10754
10755    fn control_handle(&self) -> &SocketControlHandle {
10756        &self.control_handle
10757    }
10758
10759    fn drop_without_shutdown(mut self) {
10760        // Safety: drops once, never accessed again due to mem::forget
10761        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10762        // Prevent Drop from running (which would shut down the channel)
10763        std::mem::forget(self);
10764    }
10765}
10766
10767impl SocketGetKeepAliveResponder {
10768    /// Sends a response to the FIDL transaction.
10769    ///
10770    /// Sets the channel to shutdown if an error occurs.
10771    pub fn send(
10772        self,
10773        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10774    ) -> Result<(), fidl::Error> {
10775        let _result = self.send_raw(result);
10776        if _result.is_err() {
10777            self.control_handle.shutdown();
10778        }
10779        self.drop_without_shutdown();
10780        _result
10781    }
10782
10783    /// Similar to "send" but does not shutdown the channel if an error occurs.
10784    pub fn send_no_shutdown_on_err(
10785        self,
10786        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10787    ) -> Result<(), fidl::Error> {
10788        let _result = self.send_raw(result);
10789        self.drop_without_shutdown();
10790        _result
10791    }
10792
10793    fn send_raw(
10794        &self,
10795        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10796    ) -> Result<(), fidl::Error> {
10797        self.control_handle.inner.send::<fidl::encoding::ResultType<
10798            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10799            fidl_fuchsia_posix::Errno,
10800        >>(
10801            result.map(|value| (value,)),
10802            self.tx_id,
10803            0x2dd29d3215f2c9d2,
10804            fidl::encoding::DynamicFlags::empty(),
10805        )
10806    }
10807}
10808
10809#[must_use = "FIDL methods require a response to be sent"]
10810#[derive(Debug)]
10811pub struct SocketSetOutOfBandInlineResponder {
10812    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10813    tx_id: u32,
10814}
10815
10816/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10817/// if the responder is dropped without sending a response, so that the client
10818/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10819impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10820    fn drop(&mut self) {
10821        self.control_handle.shutdown();
10822        // Safety: drops once, never accessed again
10823        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10824    }
10825}
10826
10827impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10828    type ControlHandle = SocketControlHandle;
10829
10830    fn control_handle(&self) -> &SocketControlHandle {
10831        &self.control_handle
10832    }
10833
10834    fn drop_without_shutdown(mut self) {
10835        // Safety: drops once, never accessed again due to mem::forget
10836        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10837        // Prevent Drop from running (which would shut down the channel)
10838        std::mem::forget(self);
10839    }
10840}
10841
10842impl SocketSetOutOfBandInlineResponder {
10843    /// Sends a response to the FIDL transaction.
10844    ///
10845    /// Sets the channel to shutdown if an error occurs.
10846    pub fn send(
10847        self,
10848        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10849    ) -> Result<(), fidl::Error> {
10850        let _result = self.send_raw(result);
10851        if _result.is_err() {
10852            self.control_handle.shutdown();
10853        }
10854        self.drop_without_shutdown();
10855        _result
10856    }
10857
10858    /// Similar to "send" but does not shutdown the channel if an error occurs.
10859    pub fn send_no_shutdown_on_err(
10860        self,
10861        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10862    ) -> Result<(), fidl::Error> {
10863        let _result = self.send_raw(result);
10864        self.drop_without_shutdown();
10865        _result
10866    }
10867
10868    fn send_raw(
10869        &self,
10870        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10871    ) -> Result<(), fidl::Error> {
10872        self.control_handle.inner.send::<fidl::encoding::ResultType<
10873            fidl::encoding::EmptyStruct,
10874            fidl_fuchsia_posix::Errno,
10875        >>(
10876            result,
10877            self.tx_id,
10878            0x3ecb49968bee439,
10879            fidl::encoding::DynamicFlags::empty(),
10880        )
10881    }
10882}
10883
10884#[must_use = "FIDL methods require a response to be sent"]
10885#[derive(Debug)]
10886pub struct SocketGetOutOfBandInlineResponder {
10887    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10888    tx_id: u32,
10889}
10890
10891/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10892/// if the responder is dropped without sending a response, so that the client
10893/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10894impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
10895    fn drop(&mut self) {
10896        self.control_handle.shutdown();
10897        // Safety: drops once, never accessed again
10898        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10899    }
10900}
10901
10902impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
10903    type ControlHandle = SocketControlHandle;
10904
10905    fn control_handle(&self) -> &SocketControlHandle {
10906        &self.control_handle
10907    }
10908
10909    fn drop_without_shutdown(mut self) {
10910        // Safety: drops once, never accessed again due to mem::forget
10911        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10912        // Prevent Drop from running (which would shut down the channel)
10913        std::mem::forget(self);
10914    }
10915}
10916
10917impl SocketGetOutOfBandInlineResponder {
10918    /// Sends a response to the FIDL transaction.
10919    ///
10920    /// Sets the channel to shutdown if an error occurs.
10921    pub fn send(
10922        self,
10923        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10924    ) -> Result<(), fidl::Error> {
10925        let _result = self.send_raw(result);
10926        if _result.is_err() {
10927            self.control_handle.shutdown();
10928        }
10929        self.drop_without_shutdown();
10930        _result
10931    }
10932
10933    /// Similar to "send" but does not shutdown the channel if an error occurs.
10934    pub fn send_no_shutdown_on_err(
10935        self,
10936        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10937    ) -> Result<(), fidl::Error> {
10938        let _result = self.send_raw(result);
10939        self.drop_without_shutdown();
10940        _result
10941    }
10942
10943    fn send_raw(
10944        &self,
10945        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10946    ) -> Result<(), fidl::Error> {
10947        self.control_handle.inner.send::<fidl::encoding::ResultType<
10948            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
10949            fidl_fuchsia_posix::Errno,
10950        >>(
10951            result.map(|value| (value,)),
10952            self.tx_id,
10953            0x348c1ab3aeca1745,
10954            fidl::encoding::DynamicFlags::empty(),
10955        )
10956    }
10957}
10958
10959#[must_use = "FIDL methods require a response to be sent"]
10960#[derive(Debug)]
10961pub struct SocketSetNoCheckResponder {
10962    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10963    tx_id: u32,
10964}
10965
10966/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10967/// if the responder is dropped without sending a response, so that the client
10968/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10969impl std::ops::Drop for SocketSetNoCheckResponder {
10970    fn drop(&mut self) {
10971        self.control_handle.shutdown();
10972        // Safety: drops once, never accessed again
10973        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10974    }
10975}
10976
10977impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
10978    type ControlHandle = SocketControlHandle;
10979
10980    fn control_handle(&self) -> &SocketControlHandle {
10981        &self.control_handle
10982    }
10983
10984    fn drop_without_shutdown(mut self) {
10985        // Safety: drops once, never accessed again due to mem::forget
10986        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10987        // Prevent Drop from running (which would shut down the channel)
10988        std::mem::forget(self);
10989    }
10990}
10991
10992impl SocketSetNoCheckResponder {
10993    /// Sends a response to the FIDL transaction.
10994    ///
10995    /// Sets the channel to shutdown if an error occurs.
10996    pub fn send(
10997        self,
10998        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10999    ) -> Result<(), fidl::Error> {
11000        let _result = self.send_raw(result);
11001        if _result.is_err() {
11002            self.control_handle.shutdown();
11003        }
11004        self.drop_without_shutdown();
11005        _result
11006    }
11007
11008    /// Similar to "send" but does not shutdown the channel if an error occurs.
11009    pub fn send_no_shutdown_on_err(
11010        self,
11011        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11012    ) -> Result<(), fidl::Error> {
11013        let _result = self.send_raw(result);
11014        self.drop_without_shutdown();
11015        _result
11016    }
11017
11018    fn send_raw(
11019        &self,
11020        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11021    ) -> Result<(), fidl::Error> {
11022        self.control_handle.inner.send::<fidl::encoding::ResultType<
11023            fidl::encoding::EmptyStruct,
11024            fidl_fuchsia_posix::Errno,
11025        >>(
11026            result,
11027            self.tx_id,
11028            0x6bbf00c53a4c78c2,
11029            fidl::encoding::DynamicFlags::empty(),
11030        )
11031    }
11032}
11033
11034#[must_use = "FIDL methods require a response to be sent"]
11035#[derive(Debug)]
11036pub struct SocketGetNoCheckResponder {
11037    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11038    tx_id: u32,
11039}
11040
11041/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11042/// if the responder is dropped without sending a response, so that the client
11043/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11044impl std::ops::Drop for SocketGetNoCheckResponder {
11045    fn drop(&mut self) {
11046        self.control_handle.shutdown();
11047        // Safety: drops once, never accessed again
11048        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11049    }
11050}
11051
11052impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
11053    type ControlHandle = SocketControlHandle;
11054
11055    fn control_handle(&self) -> &SocketControlHandle {
11056        &self.control_handle
11057    }
11058
11059    fn drop_without_shutdown(mut self) {
11060        // Safety: drops once, never accessed again due to mem::forget
11061        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11062        // Prevent Drop from running (which would shut down the channel)
11063        std::mem::forget(self);
11064    }
11065}
11066
11067impl SocketGetNoCheckResponder {
11068    /// Sends a response to the FIDL transaction.
11069    ///
11070    /// Sets the channel to shutdown if an error occurs.
11071    pub fn send(
11072        self,
11073        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11074    ) -> Result<(), fidl::Error> {
11075        let _result = self.send_raw(result);
11076        if _result.is_err() {
11077            self.control_handle.shutdown();
11078        }
11079        self.drop_without_shutdown();
11080        _result
11081    }
11082
11083    /// Similar to "send" but does not shutdown the channel if an error occurs.
11084    pub fn send_no_shutdown_on_err(
11085        self,
11086        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11087    ) -> Result<(), fidl::Error> {
11088        let _result = self.send_raw(result);
11089        self.drop_without_shutdown();
11090        _result
11091    }
11092
11093    fn send_raw(
11094        &self,
11095        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11096    ) -> Result<(), fidl::Error> {
11097        self.control_handle.inner.send::<fidl::encoding::ResultType<
11098            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
11099            fidl_fuchsia_posix::Errno,
11100        >>(
11101            result.map(|value| (value,)),
11102            self.tx_id,
11103            0x2cd4249286417694,
11104            fidl::encoding::DynamicFlags::empty(),
11105        )
11106    }
11107}
11108
11109#[must_use = "FIDL methods require a response to be sent"]
11110#[derive(Debug)]
11111pub struct SocketSetLingerResponder {
11112    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11113    tx_id: u32,
11114}
11115
11116/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11117/// if the responder is dropped without sending a response, so that the client
11118/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11119impl std::ops::Drop for SocketSetLingerResponder {
11120    fn drop(&mut self) {
11121        self.control_handle.shutdown();
11122        // Safety: drops once, never accessed again
11123        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11124    }
11125}
11126
11127impl fidl::endpoints::Responder for SocketSetLingerResponder {
11128    type ControlHandle = SocketControlHandle;
11129
11130    fn control_handle(&self) -> &SocketControlHandle {
11131        &self.control_handle
11132    }
11133
11134    fn drop_without_shutdown(mut self) {
11135        // Safety: drops once, never accessed again due to mem::forget
11136        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11137        // Prevent Drop from running (which would shut down the channel)
11138        std::mem::forget(self);
11139    }
11140}
11141
11142impl SocketSetLingerResponder {
11143    /// Sends a response to the FIDL transaction.
11144    ///
11145    /// Sets the channel to shutdown if an error occurs.
11146    pub fn send(
11147        self,
11148        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11149    ) -> Result<(), fidl::Error> {
11150        let _result = self.send_raw(result);
11151        if _result.is_err() {
11152            self.control_handle.shutdown();
11153        }
11154        self.drop_without_shutdown();
11155        _result
11156    }
11157
11158    /// Similar to "send" but does not shutdown the channel if an error occurs.
11159    pub fn send_no_shutdown_on_err(
11160        self,
11161        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11162    ) -> Result<(), fidl::Error> {
11163        let _result = self.send_raw(result);
11164        self.drop_without_shutdown();
11165        _result
11166    }
11167
11168    fn send_raw(
11169        &self,
11170        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11171    ) -> Result<(), fidl::Error> {
11172        self.control_handle.inner.send::<fidl::encoding::ResultType<
11173            fidl::encoding::EmptyStruct,
11174            fidl_fuchsia_posix::Errno,
11175        >>(
11176            result,
11177            self.tx_id,
11178            0x45386351246e998e,
11179            fidl::encoding::DynamicFlags::empty(),
11180        )
11181    }
11182}
11183
11184#[must_use = "FIDL methods require a response to be sent"]
11185#[derive(Debug)]
11186pub struct SocketGetLingerResponder {
11187    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11188    tx_id: u32,
11189}
11190
11191/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11192/// if the responder is dropped without sending a response, so that the client
11193/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11194impl std::ops::Drop for SocketGetLingerResponder {
11195    fn drop(&mut self) {
11196        self.control_handle.shutdown();
11197        // Safety: drops once, never accessed again
11198        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11199    }
11200}
11201
11202impl fidl::endpoints::Responder for SocketGetLingerResponder {
11203    type ControlHandle = SocketControlHandle;
11204
11205    fn control_handle(&self) -> &SocketControlHandle {
11206        &self.control_handle
11207    }
11208
11209    fn drop_without_shutdown(mut self) {
11210        // Safety: drops once, never accessed again due to mem::forget
11211        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11212        // Prevent Drop from running (which would shut down the channel)
11213        std::mem::forget(self);
11214    }
11215}
11216
11217impl SocketGetLingerResponder {
11218    /// Sends a response to the FIDL transaction.
11219    ///
11220    /// Sets the channel to shutdown if an error occurs.
11221    pub fn send(
11222        self,
11223        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11224    ) -> Result<(), fidl::Error> {
11225        let _result = self.send_raw(result);
11226        if _result.is_err() {
11227            self.control_handle.shutdown();
11228        }
11229        self.drop_without_shutdown();
11230        _result
11231    }
11232
11233    /// Similar to "send" but does not shutdown the channel if an error occurs.
11234    pub fn send_no_shutdown_on_err(
11235        self,
11236        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11237    ) -> Result<(), fidl::Error> {
11238        let _result = self.send_raw(result);
11239        self.drop_without_shutdown();
11240        _result
11241    }
11242
11243    fn send_raw(
11244        &self,
11245        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11246    ) -> Result<(), fidl::Error> {
11247        self.control_handle.inner.send::<fidl::encoding::ResultType<
11248            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11249            fidl_fuchsia_posix::Errno,
11250        >>(
11251            result,
11252            self.tx_id,
11253            0x48eb20fc5ccb0e45,
11254            fidl::encoding::DynamicFlags::empty(),
11255        )
11256    }
11257}
11258
11259#[must_use = "FIDL methods require a response to be sent"]
11260#[derive(Debug)]
11261pub struct SocketSetReusePort2Responder {
11262    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11263    tx_id: u32,
11264}
11265
11266/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11267/// if the responder is dropped without sending a response, so that the client
11268/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11269impl std::ops::Drop for SocketSetReusePort2Responder {
11270    fn drop(&mut self) {
11271        self.control_handle.shutdown();
11272        // Safety: drops once, never accessed again
11273        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11274    }
11275}
11276
11277impl fidl::endpoints::Responder for SocketSetReusePort2Responder {
11278    type ControlHandle = SocketControlHandle;
11279
11280    fn control_handle(&self) -> &SocketControlHandle {
11281        &self.control_handle
11282    }
11283
11284    fn drop_without_shutdown(mut self) {
11285        // Safety: drops once, never accessed again due to mem::forget
11286        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11287        // Prevent Drop from running (which would shut down the channel)
11288        std::mem::forget(self);
11289    }
11290}
11291
11292impl SocketSetReusePort2Responder {
11293    /// Sends a response to the FIDL transaction.
11294    ///
11295    /// Sets the channel to shutdown if an error occurs.
11296    pub fn send(
11297        self,
11298        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11299    ) -> Result<(), fidl::Error> {
11300        let _result = self.send_raw(result);
11301        if _result.is_err() {
11302            self.control_handle.shutdown();
11303        }
11304        self.drop_without_shutdown();
11305        _result
11306    }
11307
11308    /// Similar to "send" but does not shutdown the channel if an error occurs.
11309    pub fn send_no_shutdown_on_err(
11310        self,
11311        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11312    ) -> Result<(), fidl::Error> {
11313        let _result = self.send_raw(result);
11314        self.drop_without_shutdown();
11315        _result
11316    }
11317
11318    fn send_raw(
11319        &self,
11320        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11321    ) -> Result<(), fidl::Error> {
11322        self.control_handle.inner.send::<fidl::encoding::ResultType<
11323            fidl::encoding::EmptyStruct,
11324            fidl_fuchsia_posix::Errno,
11325        >>(
11326            result,
11327            self.tx_id,
11328            0x547dc9cc0455189e,
11329            fidl::encoding::DynamicFlags::empty(),
11330        )
11331    }
11332}
11333
11334#[must_use = "FIDL methods require a response to be sent"]
11335#[derive(Debug)]
11336pub struct SocketSetReusePortResponder {
11337    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11338    tx_id: u32,
11339}
11340
11341/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11342/// if the responder is dropped without sending a response, so that the client
11343/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11344impl std::ops::Drop for SocketSetReusePortResponder {
11345    fn drop(&mut self) {
11346        self.control_handle.shutdown();
11347        // Safety: drops once, never accessed again
11348        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11349    }
11350}
11351
11352impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11353    type ControlHandle = SocketControlHandle;
11354
11355    fn control_handle(&self) -> &SocketControlHandle {
11356        &self.control_handle
11357    }
11358
11359    fn drop_without_shutdown(mut self) {
11360        // Safety: drops once, never accessed again due to mem::forget
11361        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11362        // Prevent Drop from running (which would shut down the channel)
11363        std::mem::forget(self);
11364    }
11365}
11366
11367impl SocketSetReusePortResponder {
11368    /// Sends a response to the FIDL transaction.
11369    ///
11370    /// Sets the channel to shutdown if an error occurs.
11371    pub fn send(
11372        self,
11373        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11374    ) -> Result<(), fidl::Error> {
11375        let _result = self.send_raw(result);
11376        if _result.is_err() {
11377            self.control_handle.shutdown();
11378        }
11379        self.drop_without_shutdown();
11380        _result
11381    }
11382
11383    /// Similar to "send" but does not shutdown the channel if an error occurs.
11384    pub fn send_no_shutdown_on_err(
11385        self,
11386        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11387    ) -> Result<(), fidl::Error> {
11388        let _result = self.send_raw(result);
11389        self.drop_without_shutdown();
11390        _result
11391    }
11392
11393    fn send_raw(
11394        &self,
11395        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11396    ) -> Result<(), fidl::Error> {
11397        self.control_handle.inner.send::<fidl::encoding::ResultType<
11398            fidl::encoding::EmptyStruct,
11399            fidl_fuchsia_posix::Errno,
11400        >>(
11401            result,
11402            self.tx_id,
11403            0x24dd3e5cb36d9ccb,
11404            fidl::encoding::DynamicFlags::empty(),
11405        )
11406    }
11407}
11408
11409#[must_use = "FIDL methods require a response to be sent"]
11410#[derive(Debug)]
11411pub struct SocketGetReusePortResponder {
11412    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11413    tx_id: u32,
11414}
11415
11416/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11417/// if the responder is dropped without sending a response, so that the client
11418/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11419impl std::ops::Drop for SocketGetReusePortResponder {
11420    fn drop(&mut self) {
11421        self.control_handle.shutdown();
11422        // Safety: drops once, never accessed again
11423        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11424    }
11425}
11426
11427impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11428    type ControlHandle = SocketControlHandle;
11429
11430    fn control_handle(&self) -> &SocketControlHandle {
11431        &self.control_handle
11432    }
11433
11434    fn drop_without_shutdown(mut self) {
11435        // Safety: drops once, never accessed again due to mem::forget
11436        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11437        // Prevent Drop from running (which would shut down the channel)
11438        std::mem::forget(self);
11439    }
11440}
11441
11442impl SocketGetReusePortResponder {
11443    /// Sends a response to the FIDL transaction.
11444    ///
11445    /// Sets the channel to shutdown if an error occurs.
11446    pub fn send(
11447        self,
11448        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11449    ) -> Result<(), fidl::Error> {
11450        let _result = self.send_raw(result);
11451        if _result.is_err() {
11452            self.control_handle.shutdown();
11453        }
11454        self.drop_without_shutdown();
11455        _result
11456    }
11457
11458    /// Similar to "send" but does not shutdown the channel if an error occurs.
11459    pub fn send_no_shutdown_on_err(
11460        self,
11461        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11462    ) -> Result<(), fidl::Error> {
11463        let _result = self.send_raw(result);
11464        self.drop_without_shutdown();
11465        _result
11466    }
11467
11468    fn send_raw(
11469        &self,
11470        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11471    ) -> Result<(), fidl::Error> {
11472        self.control_handle.inner.send::<fidl::encoding::ResultType<
11473            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11474            fidl_fuchsia_posix::Errno,
11475        >>(
11476            result.map(|value| (value,)),
11477            self.tx_id,
11478            0x7a112c1ab54ff828,
11479            fidl::encoding::DynamicFlags::empty(),
11480        )
11481    }
11482}
11483
11484#[must_use = "FIDL methods require a response to be sent"]
11485#[derive(Debug)]
11486pub struct SocketGetAcceptConnResponder {
11487    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11488    tx_id: u32,
11489}
11490
11491/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11492/// if the responder is dropped without sending a response, so that the client
11493/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11494impl std::ops::Drop for SocketGetAcceptConnResponder {
11495    fn drop(&mut self) {
11496        self.control_handle.shutdown();
11497        // Safety: drops once, never accessed again
11498        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11499    }
11500}
11501
11502impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11503    type ControlHandle = SocketControlHandle;
11504
11505    fn control_handle(&self) -> &SocketControlHandle {
11506        &self.control_handle
11507    }
11508
11509    fn drop_without_shutdown(mut self) {
11510        // Safety: drops once, never accessed again due to mem::forget
11511        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11512        // Prevent Drop from running (which would shut down the channel)
11513        std::mem::forget(self);
11514    }
11515}
11516
11517impl SocketGetAcceptConnResponder {
11518    /// Sends a response to the FIDL transaction.
11519    ///
11520    /// Sets the channel to shutdown if an error occurs.
11521    pub fn send(
11522        self,
11523        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11524    ) -> Result<(), fidl::Error> {
11525        let _result = self.send_raw(result);
11526        if _result.is_err() {
11527            self.control_handle.shutdown();
11528        }
11529        self.drop_without_shutdown();
11530        _result
11531    }
11532
11533    /// Similar to "send" but does not shutdown the channel if an error occurs.
11534    pub fn send_no_shutdown_on_err(
11535        self,
11536        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11537    ) -> Result<(), fidl::Error> {
11538        let _result = self.send_raw(result);
11539        self.drop_without_shutdown();
11540        _result
11541    }
11542
11543    fn send_raw(
11544        &self,
11545        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11546    ) -> Result<(), fidl::Error> {
11547        self.control_handle.inner.send::<fidl::encoding::ResultType<
11548            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11549            fidl_fuchsia_posix::Errno,
11550        >>(
11551            result.map(|value| (value,)),
11552            self.tx_id,
11553            0x67ce6db6c2ec8966,
11554            fidl::encoding::DynamicFlags::empty(),
11555        )
11556    }
11557}
11558
11559#[must_use = "FIDL methods require a response to be sent"]
11560#[derive(Debug)]
11561pub struct SocketSetBindToDeviceResponder {
11562    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11563    tx_id: u32,
11564}
11565
11566/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11567/// if the responder is dropped without sending a response, so that the client
11568/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11569impl std::ops::Drop for SocketSetBindToDeviceResponder {
11570    fn drop(&mut self) {
11571        self.control_handle.shutdown();
11572        // Safety: drops once, never accessed again
11573        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11574    }
11575}
11576
11577impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11578    type ControlHandle = SocketControlHandle;
11579
11580    fn control_handle(&self) -> &SocketControlHandle {
11581        &self.control_handle
11582    }
11583
11584    fn drop_without_shutdown(mut self) {
11585        // Safety: drops once, never accessed again due to mem::forget
11586        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11587        // Prevent Drop from running (which would shut down the channel)
11588        std::mem::forget(self);
11589    }
11590}
11591
11592impl SocketSetBindToDeviceResponder {
11593    /// Sends a response to the FIDL transaction.
11594    ///
11595    /// Sets the channel to shutdown if an error occurs.
11596    pub fn send(
11597        self,
11598        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11599    ) -> Result<(), fidl::Error> {
11600        let _result = self.send_raw(result);
11601        if _result.is_err() {
11602            self.control_handle.shutdown();
11603        }
11604        self.drop_without_shutdown();
11605        _result
11606    }
11607
11608    /// Similar to "send" but does not shutdown the channel if an error occurs.
11609    pub fn send_no_shutdown_on_err(
11610        self,
11611        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11612    ) -> Result<(), fidl::Error> {
11613        let _result = self.send_raw(result);
11614        self.drop_without_shutdown();
11615        _result
11616    }
11617
11618    fn send_raw(
11619        &self,
11620        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11621    ) -> Result<(), fidl::Error> {
11622        self.control_handle.inner.send::<fidl::encoding::ResultType<
11623            fidl::encoding::EmptyStruct,
11624            fidl_fuchsia_posix::Errno,
11625        >>(
11626            result,
11627            self.tx_id,
11628            0x2118b483f28aafc4,
11629            fidl::encoding::DynamicFlags::empty(),
11630        )
11631    }
11632}
11633
11634#[must_use = "FIDL methods require a response to be sent"]
11635#[derive(Debug)]
11636pub struct SocketGetBindToDeviceResponder {
11637    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11638    tx_id: u32,
11639}
11640
11641/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11642/// if the responder is dropped without sending a response, so that the client
11643/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11644impl std::ops::Drop for SocketGetBindToDeviceResponder {
11645    fn drop(&mut self) {
11646        self.control_handle.shutdown();
11647        // Safety: drops once, never accessed again
11648        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11649    }
11650}
11651
11652impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11653    type ControlHandle = SocketControlHandle;
11654
11655    fn control_handle(&self) -> &SocketControlHandle {
11656        &self.control_handle
11657    }
11658
11659    fn drop_without_shutdown(mut self) {
11660        // Safety: drops once, never accessed again due to mem::forget
11661        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11662        // Prevent Drop from running (which would shut down the channel)
11663        std::mem::forget(self);
11664    }
11665}
11666
11667impl SocketGetBindToDeviceResponder {
11668    /// Sends a response to the FIDL transaction.
11669    ///
11670    /// Sets the channel to shutdown if an error occurs.
11671    pub fn send(
11672        self,
11673        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11674    ) -> Result<(), fidl::Error> {
11675        let _result = self.send_raw(result);
11676        if _result.is_err() {
11677            self.control_handle.shutdown();
11678        }
11679        self.drop_without_shutdown();
11680        _result
11681    }
11682
11683    /// Similar to "send" but does not shutdown the channel if an error occurs.
11684    pub fn send_no_shutdown_on_err(
11685        self,
11686        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11687    ) -> Result<(), fidl::Error> {
11688        let _result = self.send_raw(result);
11689        self.drop_without_shutdown();
11690        _result
11691    }
11692
11693    fn send_raw(
11694        &self,
11695        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11696    ) -> Result<(), fidl::Error> {
11697        self.control_handle.inner.send::<fidl::encoding::ResultType<
11698            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11699            fidl_fuchsia_posix::Errno,
11700        >>(
11701            result.map(|value| (value,)),
11702            self.tx_id,
11703            0x1ab1fbf0ef7906c8,
11704            fidl::encoding::DynamicFlags::empty(),
11705        )
11706    }
11707}
11708
11709#[must_use = "FIDL methods require a response to be sent"]
11710#[derive(Debug)]
11711pub struct SocketSetBindToInterfaceIndexResponder {
11712    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11713    tx_id: u32,
11714}
11715
11716/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11717/// if the responder is dropped without sending a response, so that the client
11718/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11719impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11720    fn drop(&mut self) {
11721        self.control_handle.shutdown();
11722        // Safety: drops once, never accessed again
11723        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11724    }
11725}
11726
11727impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11728    type ControlHandle = SocketControlHandle;
11729
11730    fn control_handle(&self) -> &SocketControlHandle {
11731        &self.control_handle
11732    }
11733
11734    fn drop_without_shutdown(mut self) {
11735        // Safety: drops once, never accessed again due to mem::forget
11736        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11737        // Prevent Drop from running (which would shut down the channel)
11738        std::mem::forget(self);
11739    }
11740}
11741
11742impl SocketSetBindToInterfaceIndexResponder {
11743    /// Sends a response to the FIDL transaction.
11744    ///
11745    /// Sets the channel to shutdown if an error occurs.
11746    pub fn send(
11747        self,
11748        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11749    ) -> Result<(), fidl::Error> {
11750        let _result = self.send_raw(result);
11751        if _result.is_err() {
11752            self.control_handle.shutdown();
11753        }
11754        self.drop_without_shutdown();
11755        _result
11756    }
11757
11758    /// Similar to "send" but does not shutdown the channel if an error occurs.
11759    pub fn send_no_shutdown_on_err(
11760        self,
11761        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11762    ) -> Result<(), fidl::Error> {
11763        let _result = self.send_raw(result);
11764        self.drop_without_shutdown();
11765        _result
11766    }
11767
11768    fn send_raw(
11769        &self,
11770        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11771    ) -> Result<(), fidl::Error> {
11772        self.control_handle.inner.send::<fidl::encoding::ResultType<
11773            fidl::encoding::EmptyStruct,
11774            fidl_fuchsia_posix::Errno,
11775        >>(
11776            result,
11777            self.tx_id,
11778            0x6e387a0def00821,
11779            fidl::encoding::DynamicFlags::empty(),
11780        )
11781    }
11782}
11783
11784#[must_use = "FIDL methods require a response to be sent"]
11785#[derive(Debug)]
11786pub struct SocketGetBindToInterfaceIndexResponder {
11787    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11788    tx_id: u32,
11789}
11790
11791/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11792/// if the responder is dropped without sending a response, so that the client
11793/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11794impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11795    fn drop(&mut self) {
11796        self.control_handle.shutdown();
11797        // Safety: drops once, never accessed again
11798        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11799    }
11800}
11801
11802impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11803    type ControlHandle = SocketControlHandle;
11804
11805    fn control_handle(&self) -> &SocketControlHandle {
11806        &self.control_handle
11807    }
11808
11809    fn drop_without_shutdown(mut self) {
11810        // Safety: drops once, never accessed again due to mem::forget
11811        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11812        // Prevent Drop from running (which would shut down the channel)
11813        std::mem::forget(self);
11814    }
11815}
11816
11817impl SocketGetBindToInterfaceIndexResponder {
11818    /// Sends a response to the FIDL transaction.
11819    ///
11820    /// Sets the channel to shutdown if an error occurs.
11821    pub fn send(
11822        self,
11823        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11824    ) -> Result<(), fidl::Error> {
11825        let _result = self.send_raw(result);
11826        if _result.is_err() {
11827            self.control_handle.shutdown();
11828        }
11829        self.drop_without_shutdown();
11830        _result
11831    }
11832
11833    /// Similar to "send" but does not shutdown the channel if an error occurs.
11834    pub fn send_no_shutdown_on_err(
11835        self,
11836        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11837    ) -> Result<(), fidl::Error> {
11838        let _result = self.send_raw(result);
11839        self.drop_without_shutdown();
11840        _result
11841    }
11842
11843    fn send_raw(
11844        &self,
11845        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11846    ) -> Result<(), fidl::Error> {
11847        self.control_handle.inner.send::<fidl::encoding::ResultType<
11848            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11849            fidl_fuchsia_posix::Errno,
11850        >>(
11851            result.map(|value| (value,)),
11852            self.tx_id,
11853            0x59c31dd3e3078295,
11854            fidl::encoding::DynamicFlags::empty(),
11855        )
11856    }
11857}
11858
11859#[must_use = "FIDL methods require a response to be sent"]
11860#[derive(Debug)]
11861pub struct SocketSetTimestampResponder {
11862    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11863    tx_id: u32,
11864}
11865
11866/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11867/// if the responder is dropped without sending a response, so that the client
11868/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11869impl std::ops::Drop for SocketSetTimestampResponder {
11870    fn drop(&mut self) {
11871        self.control_handle.shutdown();
11872        // Safety: drops once, never accessed again
11873        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11874    }
11875}
11876
11877impl fidl::endpoints::Responder for SocketSetTimestampResponder {
11878    type ControlHandle = SocketControlHandle;
11879
11880    fn control_handle(&self) -> &SocketControlHandle {
11881        &self.control_handle
11882    }
11883
11884    fn drop_without_shutdown(mut self) {
11885        // Safety: drops once, never accessed again due to mem::forget
11886        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11887        // Prevent Drop from running (which would shut down the channel)
11888        std::mem::forget(self);
11889    }
11890}
11891
11892impl SocketSetTimestampResponder {
11893    /// Sends a response to the FIDL transaction.
11894    ///
11895    /// Sets the channel to shutdown if an error occurs.
11896    pub fn send(
11897        self,
11898        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11899    ) -> Result<(), fidl::Error> {
11900        let _result = self.send_raw(result);
11901        if _result.is_err() {
11902            self.control_handle.shutdown();
11903        }
11904        self.drop_without_shutdown();
11905        _result
11906    }
11907
11908    /// Similar to "send" but does not shutdown the channel if an error occurs.
11909    pub fn send_no_shutdown_on_err(
11910        self,
11911        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11912    ) -> Result<(), fidl::Error> {
11913        let _result = self.send_raw(result);
11914        self.drop_without_shutdown();
11915        _result
11916    }
11917
11918    fn send_raw(
11919        &self,
11920        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11921    ) -> Result<(), fidl::Error> {
11922        self.control_handle.inner.send::<fidl::encoding::ResultType<
11923            fidl::encoding::EmptyStruct,
11924            fidl_fuchsia_posix::Errno,
11925        >>(
11926            result,
11927            self.tx_id,
11928            0x285d6516c263d839,
11929            fidl::encoding::DynamicFlags::empty(),
11930        )
11931    }
11932}
11933
11934#[must_use = "FIDL methods require a response to be sent"]
11935#[derive(Debug)]
11936pub struct SocketGetTimestampResponder {
11937    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11938    tx_id: u32,
11939}
11940
11941/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11942/// if the responder is dropped without sending a response, so that the client
11943/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11944impl std::ops::Drop for SocketGetTimestampResponder {
11945    fn drop(&mut self) {
11946        self.control_handle.shutdown();
11947        // Safety: drops once, never accessed again
11948        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11949    }
11950}
11951
11952impl fidl::endpoints::Responder for SocketGetTimestampResponder {
11953    type ControlHandle = SocketControlHandle;
11954
11955    fn control_handle(&self) -> &SocketControlHandle {
11956        &self.control_handle
11957    }
11958
11959    fn drop_without_shutdown(mut self) {
11960        // Safety: drops once, never accessed again due to mem::forget
11961        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11962        // Prevent Drop from running (which would shut down the channel)
11963        std::mem::forget(self);
11964    }
11965}
11966
11967impl SocketGetTimestampResponder {
11968    /// Sends a response to the FIDL transaction.
11969    ///
11970    /// Sets the channel to shutdown if an error occurs.
11971    pub fn send(
11972        self,
11973        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11974    ) -> Result<(), fidl::Error> {
11975        let _result = self.send_raw(result);
11976        if _result.is_err() {
11977            self.control_handle.shutdown();
11978        }
11979        self.drop_without_shutdown();
11980        _result
11981    }
11982
11983    /// Similar to "send" but does not shutdown the channel if an error occurs.
11984    pub fn send_no_shutdown_on_err(
11985        self,
11986        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11987    ) -> Result<(), fidl::Error> {
11988        let _result = self.send_raw(result);
11989        self.drop_without_shutdown();
11990        _result
11991    }
11992
11993    fn send_raw(
11994        &self,
11995        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11996    ) -> Result<(), fidl::Error> {
11997        self.control_handle.inner.send::<fidl::encoding::ResultType<
11998            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
11999            fidl_fuchsia_posix::Errno,
12000        >>(
12001            result.map(|value| (value,)),
12002            self.tx_id,
12003            0x49f2fffbbcc2bd27,
12004            fidl::encoding::DynamicFlags::empty(),
12005        )
12006    }
12007}
12008
12009#[must_use = "FIDL methods require a response to be sent"]
12010#[derive(Debug)]
12011pub struct SocketSetMarkResponder {
12012    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12013    tx_id: u32,
12014}
12015
12016/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12017/// if the responder is dropped without sending a response, so that the client
12018/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12019impl std::ops::Drop for SocketSetMarkResponder {
12020    fn drop(&mut self) {
12021        self.control_handle.shutdown();
12022        // Safety: drops once, never accessed again
12023        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12024    }
12025}
12026
12027impl fidl::endpoints::Responder for SocketSetMarkResponder {
12028    type ControlHandle = SocketControlHandle;
12029
12030    fn control_handle(&self) -> &SocketControlHandle {
12031        &self.control_handle
12032    }
12033
12034    fn drop_without_shutdown(mut self) {
12035        // Safety: drops once, never accessed again due to mem::forget
12036        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12037        // Prevent Drop from running (which would shut down the channel)
12038        std::mem::forget(self);
12039    }
12040}
12041
12042impl SocketSetMarkResponder {
12043    /// Sends a response to the FIDL transaction.
12044    ///
12045    /// Sets the channel to shutdown if an error occurs.
12046    pub fn send(
12047        self,
12048        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12049    ) -> Result<(), fidl::Error> {
12050        let _result = self.send_raw(result);
12051        if _result.is_err() {
12052            self.control_handle.shutdown();
12053        }
12054        self.drop_without_shutdown();
12055        _result
12056    }
12057
12058    /// Similar to "send" but does not shutdown the channel if an error occurs.
12059    pub fn send_no_shutdown_on_err(
12060        self,
12061        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12062    ) -> Result<(), fidl::Error> {
12063        let _result = self.send_raw(result);
12064        self.drop_without_shutdown();
12065        _result
12066    }
12067
12068    fn send_raw(
12069        &self,
12070        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12071    ) -> Result<(), fidl::Error> {
12072        self.control_handle.inner.send::<fidl::encoding::ResultType<
12073            fidl::encoding::EmptyStruct,
12074            fidl_fuchsia_posix::Errno,
12075        >>(
12076            result,
12077            self.tx_id,
12078            0x6ead6de09f653236,
12079            fidl::encoding::DynamicFlags::empty(),
12080        )
12081    }
12082}
12083
12084#[must_use = "FIDL methods require a response to be sent"]
12085#[derive(Debug)]
12086pub struct SocketGetMarkResponder {
12087    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12088    tx_id: u32,
12089}
12090
12091/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12092/// if the responder is dropped without sending a response, so that the client
12093/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12094impl std::ops::Drop for SocketGetMarkResponder {
12095    fn drop(&mut self) {
12096        self.control_handle.shutdown();
12097        // Safety: drops once, never accessed again
12098        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12099    }
12100}
12101
12102impl fidl::endpoints::Responder for SocketGetMarkResponder {
12103    type ControlHandle = SocketControlHandle;
12104
12105    fn control_handle(&self) -> &SocketControlHandle {
12106        &self.control_handle
12107    }
12108
12109    fn drop_without_shutdown(mut self) {
12110        // Safety: drops once, never accessed again due to mem::forget
12111        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12112        // Prevent Drop from running (which would shut down the channel)
12113        std::mem::forget(self);
12114    }
12115}
12116
12117impl SocketGetMarkResponder {
12118    /// Sends a response to the FIDL transaction.
12119    ///
12120    /// Sets the channel to shutdown if an error occurs.
12121    pub fn send(
12122        self,
12123        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12124    ) -> Result<(), fidl::Error> {
12125        let _result = self.send_raw(result);
12126        if _result.is_err() {
12127            self.control_handle.shutdown();
12128        }
12129        self.drop_without_shutdown();
12130        _result
12131    }
12132
12133    /// Similar to "send" but does not shutdown the channel if an error occurs.
12134    pub fn send_no_shutdown_on_err(
12135        self,
12136        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12137    ) -> Result<(), fidl::Error> {
12138        let _result = self.send_raw(result);
12139        self.drop_without_shutdown();
12140        _result
12141    }
12142
12143    fn send_raw(
12144        &self,
12145        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12146    ) -> Result<(), fidl::Error> {
12147        self.control_handle.inner.send::<fidl::encoding::ResultType<
12148            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
12149            fidl_fuchsia_posix::Errno,
12150        >>(
12151            result.map(|mark| (mark,)),
12152            self.tx_id,
12153            0x57a2752c61d93d47,
12154            fidl::encoding::DynamicFlags::empty(),
12155        )
12156    }
12157}
12158
12159#[must_use = "FIDL methods require a response to be sent"]
12160#[derive(Debug)]
12161pub struct SocketGetCookieResponder {
12162    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12163    tx_id: u32,
12164}
12165
12166/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12167/// if the responder is dropped without sending a response, so that the client
12168/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12169impl std::ops::Drop for SocketGetCookieResponder {
12170    fn drop(&mut self) {
12171        self.control_handle.shutdown();
12172        // Safety: drops once, never accessed again
12173        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12174    }
12175}
12176
12177impl fidl::endpoints::Responder for SocketGetCookieResponder {
12178    type ControlHandle = SocketControlHandle;
12179
12180    fn control_handle(&self) -> &SocketControlHandle {
12181        &self.control_handle
12182    }
12183
12184    fn drop_without_shutdown(mut self) {
12185        // Safety: drops once, never accessed again due to mem::forget
12186        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12187        // Prevent Drop from running (which would shut down the channel)
12188        std::mem::forget(self);
12189    }
12190}
12191
12192impl SocketGetCookieResponder {
12193    /// Sends a response to the FIDL transaction.
12194    ///
12195    /// Sets the channel to shutdown if an error occurs.
12196    pub fn send(
12197        self,
12198        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12199    ) -> Result<(), fidl::Error> {
12200        let _result = self.send_raw(result);
12201        if _result.is_err() {
12202            self.control_handle.shutdown();
12203        }
12204        self.drop_without_shutdown();
12205        _result
12206    }
12207
12208    /// Similar to "send" but does not shutdown the channel if an error occurs.
12209    pub fn send_no_shutdown_on_err(
12210        self,
12211        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12212    ) -> Result<(), fidl::Error> {
12213        let _result = self.send_raw(result);
12214        self.drop_without_shutdown();
12215        _result
12216    }
12217
12218    fn send_raw(
12219        &self,
12220        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12221    ) -> Result<(), fidl::Error> {
12222        self.control_handle.inner.send::<fidl::encoding::ResultType<
12223            fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
12224            fidl_fuchsia_posix::Errno,
12225        >>(
12226            result.map(|value| (value,)),
12227            self.tx_id,
12228            0x2c2f47fd8f924e52,
12229            fidl::encoding::DynamicFlags::empty(),
12230        )
12231    }
12232}
12233
12234#[must_use = "FIDL methods require a response to be sent"]
12235#[derive(Debug)]
12236pub struct SocketBindResponder {
12237    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12238    tx_id: u32,
12239}
12240
12241/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12242/// if the responder is dropped without sending a response, so that the client
12243/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12244impl std::ops::Drop for SocketBindResponder {
12245    fn drop(&mut self) {
12246        self.control_handle.shutdown();
12247        // Safety: drops once, never accessed again
12248        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12249    }
12250}
12251
12252impl fidl::endpoints::Responder for SocketBindResponder {
12253    type ControlHandle = SocketControlHandle;
12254
12255    fn control_handle(&self) -> &SocketControlHandle {
12256        &self.control_handle
12257    }
12258
12259    fn drop_without_shutdown(mut self) {
12260        // Safety: drops once, never accessed again due to mem::forget
12261        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12262        // Prevent Drop from running (which would shut down the channel)
12263        std::mem::forget(self);
12264    }
12265}
12266
12267impl SocketBindResponder {
12268    /// Sends a response to the FIDL transaction.
12269    ///
12270    /// Sets the channel to shutdown if an error occurs.
12271    pub fn send(
12272        self,
12273        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12274    ) -> Result<(), fidl::Error> {
12275        let _result = self.send_raw(result);
12276        if _result.is_err() {
12277            self.control_handle.shutdown();
12278        }
12279        self.drop_without_shutdown();
12280        _result
12281    }
12282
12283    /// Similar to "send" but does not shutdown the channel if an error occurs.
12284    pub fn send_no_shutdown_on_err(
12285        self,
12286        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12287    ) -> Result<(), fidl::Error> {
12288        let _result = self.send_raw(result);
12289        self.drop_without_shutdown();
12290        _result
12291    }
12292
12293    fn send_raw(
12294        &self,
12295        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12296    ) -> Result<(), fidl::Error> {
12297        self.control_handle.inner.send::<fidl::encoding::ResultType<
12298            fidl::encoding::EmptyStruct,
12299            fidl_fuchsia_posix::Errno,
12300        >>(
12301            result,
12302            self.tx_id,
12303            0x4bc6400ae92125d,
12304            fidl::encoding::DynamicFlags::empty(),
12305        )
12306    }
12307}
12308
12309#[must_use = "FIDL methods require a response to be sent"]
12310#[derive(Debug)]
12311pub struct SocketConnectResponder {
12312    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12313    tx_id: u32,
12314}
12315
12316/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12317/// if the responder is dropped without sending a response, so that the client
12318/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12319impl std::ops::Drop for SocketConnectResponder {
12320    fn drop(&mut self) {
12321        self.control_handle.shutdown();
12322        // Safety: drops once, never accessed again
12323        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12324    }
12325}
12326
12327impl fidl::endpoints::Responder for SocketConnectResponder {
12328    type ControlHandle = SocketControlHandle;
12329
12330    fn control_handle(&self) -> &SocketControlHandle {
12331        &self.control_handle
12332    }
12333
12334    fn drop_without_shutdown(mut self) {
12335        // Safety: drops once, never accessed again due to mem::forget
12336        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12337        // Prevent Drop from running (which would shut down the channel)
12338        std::mem::forget(self);
12339    }
12340}
12341
12342impl SocketConnectResponder {
12343    /// Sends a response to the FIDL transaction.
12344    ///
12345    /// Sets the channel to shutdown if an error occurs.
12346    pub fn send(
12347        self,
12348        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12349    ) -> Result<(), fidl::Error> {
12350        let _result = self.send_raw(result);
12351        if _result.is_err() {
12352            self.control_handle.shutdown();
12353        }
12354        self.drop_without_shutdown();
12355        _result
12356    }
12357
12358    /// Similar to "send" but does not shutdown the channel if an error occurs.
12359    pub fn send_no_shutdown_on_err(
12360        self,
12361        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12362    ) -> Result<(), fidl::Error> {
12363        let _result = self.send_raw(result);
12364        self.drop_without_shutdown();
12365        _result
12366    }
12367
12368    fn send_raw(
12369        &self,
12370        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12371    ) -> Result<(), fidl::Error> {
12372        self.control_handle.inner.send::<fidl::encoding::ResultType<
12373            fidl::encoding::EmptyStruct,
12374            fidl_fuchsia_posix::Errno,
12375        >>(
12376            result,
12377            self.tx_id,
12378            0x5f05f19bfdd38871,
12379            fidl::encoding::DynamicFlags::empty(),
12380        )
12381    }
12382}
12383
12384#[must_use = "FIDL methods require a response to be sent"]
12385#[derive(Debug)]
12386pub struct SocketDisconnectResponder {
12387    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12388    tx_id: u32,
12389}
12390
12391/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12392/// if the responder is dropped without sending a response, so that the client
12393/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12394impl std::ops::Drop for SocketDisconnectResponder {
12395    fn drop(&mut self) {
12396        self.control_handle.shutdown();
12397        // Safety: drops once, never accessed again
12398        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12399    }
12400}
12401
12402impl fidl::endpoints::Responder for SocketDisconnectResponder {
12403    type ControlHandle = SocketControlHandle;
12404
12405    fn control_handle(&self) -> &SocketControlHandle {
12406        &self.control_handle
12407    }
12408
12409    fn drop_without_shutdown(mut self) {
12410        // Safety: drops once, never accessed again due to mem::forget
12411        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12412        // Prevent Drop from running (which would shut down the channel)
12413        std::mem::forget(self);
12414    }
12415}
12416
12417impl SocketDisconnectResponder {
12418    /// Sends a response to the FIDL transaction.
12419    ///
12420    /// Sets the channel to shutdown if an error occurs.
12421    pub fn send(
12422        self,
12423        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12424    ) -> Result<(), fidl::Error> {
12425        let _result = self.send_raw(result);
12426        if _result.is_err() {
12427            self.control_handle.shutdown();
12428        }
12429        self.drop_without_shutdown();
12430        _result
12431    }
12432
12433    /// Similar to "send" but does not shutdown the channel if an error occurs.
12434    pub fn send_no_shutdown_on_err(
12435        self,
12436        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12437    ) -> Result<(), fidl::Error> {
12438        let _result = self.send_raw(result);
12439        self.drop_without_shutdown();
12440        _result
12441    }
12442
12443    fn send_raw(
12444        &self,
12445        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12446    ) -> Result<(), fidl::Error> {
12447        self.control_handle.inner.send::<fidl::encoding::ResultType<
12448            fidl::encoding::EmptyStruct,
12449            fidl_fuchsia_posix::Errno,
12450        >>(
12451            result,
12452            self.tx_id,
12453            0x74e63b91f7b29b2,
12454            fidl::encoding::DynamicFlags::empty(),
12455        )
12456    }
12457}
12458
12459#[must_use = "FIDL methods require a response to be sent"]
12460#[derive(Debug)]
12461pub struct SocketGetSockNameResponder {
12462    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12463    tx_id: u32,
12464}
12465
12466/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12467/// if the responder is dropped without sending a response, so that the client
12468/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12469impl std::ops::Drop for SocketGetSockNameResponder {
12470    fn drop(&mut self) {
12471        self.control_handle.shutdown();
12472        // Safety: drops once, never accessed again
12473        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12474    }
12475}
12476
12477impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12478    type ControlHandle = SocketControlHandle;
12479
12480    fn control_handle(&self) -> &SocketControlHandle {
12481        &self.control_handle
12482    }
12483
12484    fn drop_without_shutdown(mut self) {
12485        // Safety: drops once, never accessed again due to mem::forget
12486        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12487        // Prevent Drop from running (which would shut down the channel)
12488        std::mem::forget(self);
12489    }
12490}
12491
12492impl SocketGetSockNameResponder {
12493    /// Sends a response to the FIDL transaction.
12494    ///
12495    /// Sets the channel to shutdown if an error occurs.
12496    pub fn send(
12497        self,
12498        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12499    ) -> Result<(), fidl::Error> {
12500        let _result = self.send_raw(result);
12501        if _result.is_err() {
12502            self.control_handle.shutdown();
12503        }
12504        self.drop_without_shutdown();
12505        _result
12506    }
12507
12508    /// Similar to "send" but does not shutdown the channel if an error occurs.
12509    pub fn send_no_shutdown_on_err(
12510        self,
12511        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12512    ) -> Result<(), fidl::Error> {
12513        let _result = self.send_raw(result);
12514        self.drop_without_shutdown();
12515        _result
12516    }
12517
12518    fn send_raw(
12519        &self,
12520        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12521    ) -> Result<(), fidl::Error> {
12522        self.control_handle.inner.send::<fidl::encoding::ResultType<
12523            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12524            fidl_fuchsia_posix::Errno,
12525        >>(
12526            result.map(|addr| (addr,)),
12527            self.tx_id,
12528            0x475f23f84a1a4f85,
12529            fidl::encoding::DynamicFlags::empty(),
12530        )
12531    }
12532}
12533
12534#[must_use = "FIDL methods require a response to be sent"]
12535#[derive(Debug)]
12536pub struct SocketGetPeerNameResponder {
12537    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12538    tx_id: u32,
12539}
12540
12541/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12542/// if the responder is dropped without sending a response, so that the client
12543/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12544impl std::ops::Drop for SocketGetPeerNameResponder {
12545    fn drop(&mut self) {
12546        self.control_handle.shutdown();
12547        // Safety: drops once, never accessed again
12548        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12549    }
12550}
12551
12552impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12553    type ControlHandle = SocketControlHandle;
12554
12555    fn control_handle(&self) -> &SocketControlHandle {
12556        &self.control_handle
12557    }
12558
12559    fn drop_without_shutdown(mut self) {
12560        // Safety: drops once, never accessed again due to mem::forget
12561        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12562        // Prevent Drop from running (which would shut down the channel)
12563        std::mem::forget(self);
12564    }
12565}
12566
12567impl SocketGetPeerNameResponder {
12568    /// Sends a response to the FIDL transaction.
12569    ///
12570    /// Sets the channel to shutdown if an error occurs.
12571    pub fn send(
12572        self,
12573        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12574    ) -> Result<(), fidl::Error> {
12575        let _result = self.send_raw(result);
12576        if _result.is_err() {
12577            self.control_handle.shutdown();
12578        }
12579        self.drop_without_shutdown();
12580        _result
12581    }
12582
12583    /// Similar to "send" but does not shutdown the channel if an error occurs.
12584    pub fn send_no_shutdown_on_err(
12585        self,
12586        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12587    ) -> Result<(), fidl::Error> {
12588        let _result = self.send_raw(result);
12589        self.drop_without_shutdown();
12590        _result
12591    }
12592
12593    fn send_raw(
12594        &self,
12595        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12596    ) -> Result<(), fidl::Error> {
12597        self.control_handle.inner.send::<fidl::encoding::ResultType<
12598            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12599            fidl_fuchsia_posix::Errno,
12600        >>(
12601            result.map(|addr| (addr,)),
12602            self.tx_id,
12603            0x1ffecf4bd5b6432e,
12604            fidl::encoding::DynamicFlags::empty(),
12605        )
12606    }
12607}
12608
12609#[must_use = "FIDL methods require a response to be sent"]
12610#[derive(Debug)]
12611pub struct SocketShutdownResponder {
12612    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12613    tx_id: u32,
12614}
12615
12616/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12617/// if the responder is dropped without sending a response, so that the client
12618/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12619impl std::ops::Drop for SocketShutdownResponder {
12620    fn drop(&mut self) {
12621        self.control_handle.shutdown();
12622        // Safety: drops once, never accessed again
12623        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12624    }
12625}
12626
12627impl fidl::endpoints::Responder for SocketShutdownResponder {
12628    type ControlHandle = SocketControlHandle;
12629
12630    fn control_handle(&self) -> &SocketControlHandle {
12631        &self.control_handle
12632    }
12633
12634    fn drop_without_shutdown(mut self) {
12635        // Safety: drops once, never accessed again due to mem::forget
12636        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12637        // Prevent Drop from running (which would shut down the channel)
12638        std::mem::forget(self);
12639    }
12640}
12641
12642impl SocketShutdownResponder {
12643    /// Sends a response to the FIDL transaction.
12644    ///
12645    /// Sets the channel to shutdown if an error occurs.
12646    pub fn send(
12647        self,
12648        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12649    ) -> Result<(), fidl::Error> {
12650        let _result = self.send_raw(result);
12651        if _result.is_err() {
12652            self.control_handle.shutdown();
12653        }
12654        self.drop_without_shutdown();
12655        _result
12656    }
12657
12658    /// Similar to "send" but does not shutdown the channel if an error occurs.
12659    pub fn send_no_shutdown_on_err(
12660        self,
12661        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12662    ) -> Result<(), fidl::Error> {
12663        let _result = self.send_raw(result);
12664        self.drop_without_shutdown();
12665        _result
12666    }
12667
12668    fn send_raw(
12669        &self,
12670        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12671    ) -> Result<(), fidl::Error> {
12672        self.control_handle.inner.send::<fidl::encoding::ResultType<
12673            fidl::encoding::EmptyStruct,
12674            fidl_fuchsia_posix::Errno,
12675        >>(
12676            result,
12677            self.tx_id,
12678            0x247f38b6db68c336,
12679            fidl::encoding::DynamicFlags::empty(),
12680        )
12681    }
12682}
12683
12684#[must_use = "FIDL methods require a response to be sent"]
12685#[derive(Debug)]
12686pub struct SocketSetIpTypeOfServiceResponder {
12687    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12688    tx_id: u32,
12689}
12690
12691/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12692/// if the responder is dropped without sending a response, so that the client
12693/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12694impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12695    fn drop(&mut self) {
12696        self.control_handle.shutdown();
12697        // Safety: drops once, never accessed again
12698        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12699    }
12700}
12701
12702impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12703    type ControlHandle = SocketControlHandle;
12704
12705    fn control_handle(&self) -> &SocketControlHandle {
12706        &self.control_handle
12707    }
12708
12709    fn drop_without_shutdown(mut self) {
12710        // Safety: drops once, never accessed again due to mem::forget
12711        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12712        // Prevent Drop from running (which would shut down the channel)
12713        std::mem::forget(self);
12714    }
12715}
12716
12717impl SocketSetIpTypeOfServiceResponder {
12718    /// Sends a response to the FIDL transaction.
12719    ///
12720    /// Sets the channel to shutdown if an error occurs.
12721    pub fn send(
12722        self,
12723        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12724    ) -> Result<(), fidl::Error> {
12725        let _result = self.send_raw(result);
12726        if _result.is_err() {
12727            self.control_handle.shutdown();
12728        }
12729        self.drop_without_shutdown();
12730        _result
12731    }
12732
12733    /// Similar to "send" but does not shutdown the channel if an error occurs.
12734    pub fn send_no_shutdown_on_err(
12735        self,
12736        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12737    ) -> Result<(), fidl::Error> {
12738        let _result = self.send_raw(result);
12739        self.drop_without_shutdown();
12740        _result
12741    }
12742
12743    fn send_raw(
12744        &self,
12745        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12746    ) -> Result<(), fidl::Error> {
12747        self.control_handle.inner.send::<fidl::encoding::ResultType<
12748            fidl::encoding::EmptyStruct,
12749            fidl_fuchsia_posix::Errno,
12750        >>(
12751            result,
12752            self.tx_id,
12753            0x995c600475b6d46,
12754            fidl::encoding::DynamicFlags::empty(),
12755        )
12756    }
12757}
12758
12759#[must_use = "FIDL methods require a response to be sent"]
12760#[derive(Debug)]
12761pub struct SocketGetIpTypeOfServiceResponder {
12762    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12763    tx_id: u32,
12764}
12765
12766/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12767/// if the responder is dropped without sending a response, so that the client
12768/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12769impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12770    fn drop(&mut self) {
12771        self.control_handle.shutdown();
12772        // Safety: drops once, never accessed again
12773        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12774    }
12775}
12776
12777impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12778    type ControlHandle = SocketControlHandle;
12779
12780    fn control_handle(&self) -> &SocketControlHandle {
12781        &self.control_handle
12782    }
12783
12784    fn drop_without_shutdown(mut self) {
12785        // Safety: drops once, never accessed again due to mem::forget
12786        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12787        // Prevent Drop from running (which would shut down the channel)
12788        std::mem::forget(self);
12789    }
12790}
12791
12792impl SocketGetIpTypeOfServiceResponder {
12793    /// Sends a response to the FIDL transaction.
12794    ///
12795    /// Sets the channel to shutdown if an error occurs.
12796    pub fn send(
12797        self,
12798        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12799    ) -> Result<(), fidl::Error> {
12800        let _result = self.send_raw(result);
12801        if _result.is_err() {
12802            self.control_handle.shutdown();
12803        }
12804        self.drop_without_shutdown();
12805        _result
12806    }
12807
12808    /// Similar to "send" but does not shutdown the channel if an error occurs.
12809    pub fn send_no_shutdown_on_err(
12810        self,
12811        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12812    ) -> Result<(), fidl::Error> {
12813        let _result = self.send_raw(result);
12814        self.drop_without_shutdown();
12815        _result
12816    }
12817
12818    fn send_raw(
12819        &self,
12820        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12821    ) -> Result<(), fidl::Error> {
12822        self.control_handle.inner.send::<fidl::encoding::ResultType<
12823            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12824            fidl_fuchsia_posix::Errno,
12825        >>(
12826            result.map(|value| (value,)),
12827            self.tx_id,
12828            0x3814a04259f75fcb,
12829            fidl::encoding::DynamicFlags::empty(),
12830        )
12831    }
12832}
12833
12834#[must_use = "FIDL methods require a response to be sent"]
12835#[derive(Debug)]
12836pub struct SocketSetIpTtlResponder {
12837    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12838    tx_id: u32,
12839}
12840
12841/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12842/// if the responder is dropped without sending a response, so that the client
12843/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12844impl std::ops::Drop for SocketSetIpTtlResponder {
12845    fn drop(&mut self) {
12846        self.control_handle.shutdown();
12847        // Safety: drops once, never accessed again
12848        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12849    }
12850}
12851
12852impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12853    type ControlHandle = SocketControlHandle;
12854
12855    fn control_handle(&self) -> &SocketControlHandle {
12856        &self.control_handle
12857    }
12858
12859    fn drop_without_shutdown(mut self) {
12860        // Safety: drops once, never accessed again due to mem::forget
12861        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12862        // Prevent Drop from running (which would shut down the channel)
12863        std::mem::forget(self);
12864    }
12865}
12866
12867impl SocketSetIpTtlResponder {
12868    /// Sends a response to the FIDL transaction.
12869    ///
12870    /// Sets the channel to shutdown if an error occurs.
12871    pub fn send(
12872        self,
12873        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12874    ) -> Result<(), fidl::Error> {
12875        let _result = self.send_raw(result);
12876        if _result.is_err() {
12877            self.control_handle.shutdown();
12878        }
12879        self.drop_without_shutdown();
12880        _result
12881    }
12882
12883    /// Similar to "send" but does not shutdown the channel if an error occurs.
12884    pub fn send_no_shutdown_on_err(
12885        self,
12886        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12887    ) -> Result<(), fidl::Error> {
12888        let _result = self.send_raw(result);
12889        self.drop_without_shutdown();
12890        _result
12891    }
12892
12893    fn send_raw(
12894        &self,
12895        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12896    ) -> Result<(), fidl::Error> {
12897        self.control_handle.inner.send::<fidl::encoding::ResultType<
12898            fidl::encoding::EmptyStruct,
12899            fidl_fuchsia_posix::Errno,
12900        >>(
12901            result,
12902            self.tx_id,
12903            0x29e2424b433ae1ef,
12904            fidl::encoding::DynamicFlags::empty(),
12905        )
12906    }
12907}
12908
12909#[must_use = "FIDL methods require a response to be sent"]
12910#[derive(Debug)]
12911pub struct SocketGetIpTtlResponder {
12912    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12913    tx_id: u32,
12914}
12915
12916/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12917/// if the responder is dropped without sending a response, so that the client
12918/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12919impl std::ops::Drop for SocketGetIpTtlResponder {
12920    fn drop(&mut self) {
12921        self.control_handle.shutdown();
12922        // Safety: drops once, never accessed again
12923        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12924    }
12925}
12926
12927impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
12928    type ControlHandle = SocketControlHandle;
12929
12930    fn control_handle(&self) -> &SocketControlHandle {
12931        &self.control_handle
12932    }
12933
12934    fn drop_without_shutdown(mut self) {
12935        // Safety: drops once, never accessed again due to mem::forget
12936        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12937        // Prevent Drop from running (which would shut down the channel)
12938        std::mem::forget(self);
12939    }
12940}
12941
12942impl SocketGetIpTtlResponder {
12943    /// Sends a response to the FIDL transaction.
12944    ///
12945    /// Sets the channel to shutdown if an error occurs.
12946    pub fn send(
12947        self,
12948        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12949    ) -> Result<(), fidl::Error> {
12950        let _result = self.send_raw(result);
12951        if _result.is_err() {
12952            self.control_handle.shutdown();
12953        }
12954        self.drop_without_shutdown();
12955        _result
12956    }
12957
12958    /// Similar to "send" but does not shutdown the channel if an error occurs.
12959    pub fn send_no_shutdown_on_err(
12960        self,
12961        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12962    ) -> Result<(), fidl::Error> {
12963        let _result = self.send_raw(result);
12964        self.drop_without_shutdown();
12965        _result
12966    }
12967
12968    fn send_raw(
12969        &self,
12970        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12971    ) -> Result<(), fidl::Error> {
12972        self.control_handle.inner.send::<fidl::encoding::ResultType<
12973            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
12974            fidl_fuchsia_posix::Errno,
12975        >>(
12976            result.map(|value| (value,)),
12977            self.tx_id,
12978            0x47e47fa1f24da471,
12979            fidl::encoding::DynamicFlags::empty(),
12980        )
12981    }
12982}
12983
12984#[must_use = "FIDL methods require a response to be sent"]
12985#[derive(Debug)]
12986pub struct SocketSetIpPacketInfoResponder {
12987    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12988    tx_id: u32,
12989}
12990
12991/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12992/// if the responder is dropped without sending a response, so that the client
12993/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12994impl std::ops::Drop for SocketSetIpPacketInfoResponder {
12995    fn drop(&mut self) {
12996        self.control_handle.shutdown();
12997        // Safety: drops once, never accessed again
12998        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12999    }
13000}
13001
13002impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
13003    type ControlHandle = SocketControlHandle;
13004
13005    fn control_handle(&self) -> &SocketControlHandle {
13006        &self.control_handle
13007    }
13008
13009    fn drop_without_shutdown(mut self) {
13010        // Safety: drops once, never accessed again due to mem::forget
13011        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13012        // Prevent Drop from running (which would shut down the channel)
13013        std::mem::forget(self);
13014    }
13015}
13016
13017impl SocketSetIpPacketInfoResponder {
13018    /// Sends a response to the FIDL transaction.
13019    ///
13020    /// Sets the channel to shutdown if an error occurs.
13021    pub fn send(
13022        self,
13023        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13024    ) -> Result<(), fidl::Error> {
13025        let _result = self.send_raw(result);
13026        if _result.is_err() {
13027            self.control_handle.shutdown();
13028        }
13029        self.drop_without_shutdown();
13030        _result
13031    }
13032
13033    /// Similar to "send" but does not shutdown the channel if an error occurs.
13034    pub fn send_no_shutdown_on_err(
13035        self,
13036        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13037    ) -> Result<(), fidl::Error> {
13038        let _result = self.send_raw(result);
13039        self.drop_without_shutdown();
13040        _result
13041    }
13042
13043    fn send_raw(
13044        &self,
13045        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13046    ) -> Result<(), fidl::Error> {
13047        self.control_handle.inner.send::<fidl::encoding::ResultType<
13048            fidl::encoding::EmptyStruct,
13049            fidl_fuchsia_posix::Errno,
13050        >>(
13051            result,
13052            self.tx_id,
13053            0x392d16bee20c0e16,
13054            fidl::encoding::DynamicFlags::empty(),
13055        )
13056    }
13057}
13058
13059#[must_use = "FIDL methods require a response to be sent"]
13060#[derive(Debug)]
13061pub struct SocketGetIpPacketInfoResponder {
13062    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13063    tx_id: u32,
13064}
13065
13066/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13067/// if the responder is dropped without sending a response, so that the client
13068/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13069impl std::ops::Drop for SocketGetIpPacketInfoResponder {
13070    fn drop(&mut self) {
13071        self.control_handle.shutdown();
13072        // Safety: drops once, never accessed again
13073        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13074    }
13075}
13076
13077impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
13078    type ControlHandle = SocketControlHandle;
13079
13080    fn control_handle(&self) -> &SocketControlHandle {
13081        &self.control_handle
13082    }
13083
13084    fn drop_without_shutdown(mut self) {
13085        // Safety: drops once, never accessed again due to mem::forget
13086        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13087        // Prevent Drop from running (which would shut down the channel)
13088        std::mem::forget(self);
13089    }
13090}
13091
13092impl SocketGetIpPacketInfoResponder {
13093    /// Sends a response to the FIDL transaction.
13094    ///
13095    /// Sets the channel to shutdown if an error occurs.
13096    pub fn send(
13097        self,
13098        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13099    ) -> Result<(), fidl::Error> {
13100        let _result = self.send_raw(result);
13101        if _result.is_err() {
13102            self.control_handle.shutdown();
13103        }
13104        self.drop_without_shutdown();
13105        _result
13106    }
13107
13108    /// Similar to "send" but does not shutdown the channel if an error occurs.
13109    pub fn send_no_shutdown_on_err(
13110        self,
13111        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13112    ) -> Result<(), fidl::Error> {
13113        let _result = self.send_raw(result);
13114        self.drop_without_shutdown();
13115        _result
13116    }
13117
13118    fn send_raw(
13119        &self,
13120        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13121    ) -> Result<(), fidl::Error> {
13122        self.control_handle.inner.send::<fidl::encoding::ResultType<
13123            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
13124            fidl_fuchsia_posix::Errno,
13125        >>(
13126            result.map(|value| (value,)),
13127            self.tx_id,
13128            0x54b505f242280740,
13129            fidl::encoding::DynamicFlags::empty(),
13130        )
13131    }
13132}
13133
13134#[must_use = "FIDL methods require a response to be sent"]
13135#[derive(Debug)]
13136pub struct SocketSetIpReceiveTypeOfServiceResponder {
13137    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13138    tx_id: u32,
13139}
13140
13141/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13142/// if the responder is dropped without sending a response, so that the client
13143/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13144impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
13145    fn drop(&mut self) {
13146        self.control_handle.shutdown();
13147        // Safety: drops once, never accessed again
13148        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13149    }
13150}
13151
13152impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
13153    type ControlHandle = SocketControlHandle;
13154
13155    fn control_handle(&self) -> &SocketControlHandle {
13156        &self.control_handle
13157    }
13158
13159    fn drop_without_shutdown(mut self) {
13160        // Safety: drops once, never accessed again due to mem::forget
13161        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13162        // Prevent Drop from running (which would shut down the channel)
13163        std::mem::forget(self);
13164    }
13165}
13166
13167impl SocketSetIpReceiveTypeOfServiceResponder {
13168    /// Sends a response to the FIDL transaction.
13169    ///
13170    /// Sets the channel to shutdown if an error occurs.
13171    pub fn send(
13172        self,
13173        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13174    ) -> Result<(), fidl::Error> {
13175        let _result = self.send_raw(result);
13176        if _result.is_err() {
13177            self.control_handle.shutdown();
13178        }
13179        self.drop_without_shutdown();
13180        _result
13181    }
13182
13183    /// Similar to "send" but does not shutdown the channel if an error occurs.
13184    pub fn send_no_shutdown_on_err(
13185        self,
13186        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13187    ) -> Result<(), fidl::Error> {
13188        let _result = self.send_raw(result);
13189        self.drop_without_shutdown();
13190        _result
13191    }
13192
13193    fn send_raw(
13194        &self,
13195        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13196    ) -> Result<(), fidl::Error> {
13197        self.control_handle.inner.send::<fidl::encoding::ResultType<
13198            fidl::encoding::EmptyStruct,
13199            fidl_fuchsia_posix::Errno,
13200        >>(
13201            result,
13202            self.tx_id,
13203            0x6c4f6714995f84ef,
13204            fidl::encoding::DynamicFlags::empty(),
13205        )
13206    }
13207}
13208
13209#[must_use = "FIDL methods require a response to be sent"]
13210#[derive(Debug)]
13211pub struct SocketGetIpReceiveTypeOfServiceResponder {
13212    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13213    tx_id: u32,
13214}
13215
13216/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13217/// if the responder is dropped without sending a response, so that the client
13218/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13219impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13220    fn drop(&mut self) {
13221        self.control_handle.shutdown();
13222        // Safety: drops once, never accessed again
13223        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13224    }
13225}
13226
13227impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13228    type ControlHandle = SocketControlHandle;
13229
13230    fn control_handle(&self) -> &SocketControlHandle {
13231        &self.control_handle
13232    }
13233
13234    fn drop_without_shutdown(mut self) {
13235        // Safety: drops once, never accessed again due to mem::forget
13236        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13237        // Prevent Drop from running (which would shut down the channel)
13238        std::mem::forget(self);
13239    }
13240}
13241
13242impl SocketGetIpReceiveTypeOfServiceResponder {
13243    /// Sends a response to the FIDL transaction.
13244    ///
13245    /// Sets the channel to shutdown if an error occurs.
13246    pub fn send(
13247        self,
13248        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13249    ) -> Result<(), fidl::Error> {
13250        let _result = self.send_raw(result);
13251        if _result.is_err() {
13252            self.control_handle.shutdown();
13253        }
13254        self.drop_without_shutdown();
13255        _result
13256    }
13257
13258    /// Similar to "send" but does not shutdown the channel if an error occurs.
13259    pub fn send_no_shutdown_on_err(
13260        self,
13261        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13262    ) -> Result<(), fidl::Error> {
13263        let _result = self.send_raw(result);
13264        self.drop_without_shutdown();
13265        _result
13266    }
13267
13268    fn send_raw(
13269        &self,
13270        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13271    ) -> Result<(), fidl::Error> {
13272        self.control_handle.inner.send::<fidl::encoding::ResultType<
13273            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13274            fidl_fuchsia_posix::Errno,
13275        >>(
13276            result.map(|value| (value,)),
13277            self.tx_id,
13278            0x4158ba7dc2795960,
13279            fidl::encoding::DynamicFlags::empty(),
13280        )
13281    }
13282}
13283
13284#[must_use = "FIDL methods require a response to be sent"]
13285#[derive(Debug)]
13286pub struct SocketSetIpReceiveTtlResponder {
13287    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13288    tx_id: u32,
13289}
13290
13291/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13292/// if the responder is dropped without sending a response, so that the client
13293/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13294impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13295    fn drop(&mut self) {
13296        self.control_handle.shutdown();
13297        // Safety: drops once, never accessed again
13298        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13299    }
13300}
13301
13302impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13303    type ControlHandle = SocketControlHandle;
13304
13305    fn control_handle(&self) -> &SocketControlHandle {
13306        &self.control_handle
13307    }
13308
13309    fn drop_without_shutdown(mut self) {
13310        // Safety: drops once, never accessed again due to mem::forget
13311        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13312        // Prevent Drop from running (which would shut down the channel)
13313        std::mem::forget(self);
13314    }
13315}
13316
13317impl SocketSetIpReceiveTtlResponder {
13318    /// Sends a response to the FIDL transaction.
13319    ///
13320    /// Sets the channel to shutdown if an error occurs.
13321    pub fn send(
13322        self,
13323        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13324    ) -> Result<(), fidl::Error> {
13325        let _result = self.send_raw(result);
13326        if _result.is_err() {
13327            self.control_handle.shutdown();
13328        }
13329        self.drop_without_shutdown();
13330        _result
13331    }
13332
13333    /// Similar to "send" but does not shutdown the channel if an error occurs.
13334    pub fn send_no_shutdown_on_err(
13335        self,
13336        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13337    ) -> Result<(), fidl::Error> {
13338        let _result = self.send_raw(result);
13339        self.drop_without_shutdown();
13340        _result
13341    }
13342
13343    fn send_raw(
13344        &self,
13345        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13346    ) -> Result<(), fidl::Error> {
13347        self.control_handle.inner.send::<fidl::encoding::ResultType<
13348            fidl::encoding::EmptyStruct,
13349            fidl_fuchsia_posix::Errno,
13350        >>(
13351            result,
13352            self.tx_id,
13353            0x46f15be0ce0ab82b,
13354            fidl::encoding::DynamicFlags::empty(),
13355        )
13356    }
13357}
13358
13359#[must_use = "FIDL methods require a response to be sent"]
13360#[derive(Debug)]
13361pub struct SocketGetIpReceiveTtlResponder {
13362    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13363    tx_id: u32,
13364}
13365
13366/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13367/// if the responder is dropped without sending a response, so that the client
13368/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13369impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13370    fn drop(&mut self) {
13371        self.control_handle.shutdown();
13372        // Safety: drops once, never accessed again
13373        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13374    }
13375}
13376
13377impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13378    type ControlHandle = SocketControlHandle;
13379
13380    fn control_handle(&self) -> &SocketControlHandle {
13381        &self.control_handle
13382    }
13383
13384    fn drop_without_shutdown(mut self) {
13385        // Safety: drops once, never accessed again due to mem::forget
13386        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13387        // Prevent Drop from running (which would shut down the channel)
13388        std::mem::forget(self);
13389    }
13390}
13391
13392impl SocketGetIpReceiveTtlResponder {
13393    /// Sends a response to the FIDL transaction.
13394    ///
13395    /// Sets the channel to shutdown if an error occurs.
13396    pub fn send(
13397        self,
13398        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13399    ) -> Result<(), fidl::Error> {
13400        let _result = self.send_raw(result);
13401        if _result.is_err() {
13402            self.control_handle.shutdown();
13403        }
13404        self.drop_without_shutdown();
13405        _result
13406    }
13407
13408    /// Similar to "send" but does not shutdown the channel if an error occurs.
13409    pub fn send_no_shutdown_on_err(
13410        self,
13411        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13412    ) -> Result<(), fidl::Error> {
13413        let _result = self.send_raw(result);
13414        self.drop_without_shutdown();
13415        _result
13416    }
13417
13418    fn send_raw(
13419        &self,
13420        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13421    ) -> Result<(), fidl::Error> {
13422        self.control_handle.inner.send::<fidl::encoding::ResultType<
13423            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13424            fidl_fuchsia_posix::Errno,
13425        >>(
13426            result.map(|value| (value,)),
13427            self.tx_id,
13428            0x678ddd5a5dfa2eb5,
13429            fidl::encoding::DynamicFlags::empty(),
13430        )
13431    }
13432}
13433
13434#[must_use = "FIDL methods require a response to be sent"]
13435#[derive(Debug)]
13436pub struct SocketSetIpMulticastInterfaceResponder {
13437    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13438    tx_id: u32,
13439}
13440
13441/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13442/// if the responder is dropped without sending a response, so that the client
13443/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13444impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13445    fn drop(&mut self) {
13446        self.control_handle.shutdown();
13447        // Safety: drops once, never accessed again
13448        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13449    }
13450}
13451
13452impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13453    type ControlHandle = SocketControlHandle;
13454
13455    fn control_handle(&self) -> &SocketControlHandle {
13456        &self.control_handle
13457    }
13458
13459    fn drop_without_shutdown(mut self) {
13460        // Safety: drops once, never accessed again due to mem::forget
13461        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13462        // Prevent Drop from running (which would shut down the channel)
13463        std::mem::forget(self);
13464    }
13465}
13466
13467impl SocketSetIpMulticastInterfaceResponder {
13468    /// Sends a response to the FIDL transaction.
13469    ///
13470    /// Sets the channel to shutdown if an error occurs.
13471    pub fn send(
13472        self,
13473        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13474    ) -> Result<(), fidl::Error> {
13475        let _result = self.send_raw(result);
13476        if _result.is_err() {
13477            self.control_handle.shutdown();
13478        }
13479        self.drop_without_shutdown();
13480        _result
13481    }
13482
13483    /// Similar to "send" but does not shutdown the channel if an error occurs.
13484    pub fn send_no_shutdown_on_err(
13485        self,
13486        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13487    ) -> Result<(), fidl::Error> {
13488        let _result = self.send_raw(result);
13489        self.drop_without_shutdown();
13490        _result
13491    }
13492
13493    fn send_raw(
13494        &self,
13495        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13496    ) -> Result<(), fidl::Error> {
13497        self.control_handle.inner.send::<fidl::encoding::ResultType<
13498            fidl::encoding::EmptyStruct,
13499            fidl_fuchsia_posix::Errno,
13500        >>(
13501            result,
13502            self.tx_id,
13503            0x752fbfa9b12befe,
13504            fidl::encoding::DynamicFlags::empty(),
13505        )
13506    }
13507}
13508
13509#[must_use = "FIDL methods require a response to be sent"]
13510#[derive(Debug)]
13511pub struct SocketGetIpMulticastInterfaceResponder {
13512    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13513    tx_id: u32,
13514}
13515
13516/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13517/// if the responder is dropped without sending a response, so that the client
13518/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13519impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13520    fn drop(&mut self) {
13521        self.control_handle.shutdown();
13522        // Safety: drops once, never accessed again
13523        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13524    }
13525}
13526
13527impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13528    type ControlHandle = SocketControlHandle;
13529
13530    fn control_handle(&self) -> &SocketControlHandle {
13531        &self.control_handle
13532    }
13533
13534    fn drop_without_shutdown(mut self) {
13535        // Safety: drops once, never accessed again due to mem::forget
13536        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13537        // Prevent Drop from running (which would shut down the channel)
13538        std::mem::forget(self);
13539    }
13540}
13541
13542impl SocketGetIpMulticastInterfaceResponder {
13543    /// Sends a response to the FIDL transaction.
13544    ///
13545    /// Sets the channel to shutdown if an error occurs.
13546    pub fn send(
13547        self,
13548        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13549    ) -> Result<(), fidl::Error> {
13550        let _result = self.send_raw(result);
13551        if _result.is_err() {
13552            self.control_handle.shutdown();
13553        }
13554        self.drop_without_shutdown();
13555        _result
13556    }
13557
13558    /// Similar to "send" but does not shutdown the channel if an error occurs.
13559    pub fn send_no_shutdown_on_err(
13560        self,
13561        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13562    ) -> Result<(), fidl::Error> {
13563        let _result = self.send_raw(result);
13564        self.drop_without_shutdown();
13565        _result
13566    }
13567
13568    fn send_raw(
13569        &self,
13570        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13571    ) -> Result<(), fidl::Error> {
13572        self.control_handle.inner.send::<fidl::encoding::ResultType<
13573            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13574            fidl_fuchsia_posix::Errno,
13575        >>(
13576            result.map(|value| (value,)),
13577            self.tx_id,
13578            0x320bd14c4df046c4,
13579            fidl::encoding::DynamicFlags::empty(),
13580        )
13581    }
13582}
13583
13584#[must_use = "FIDL methods require a response to be sent"]
13585#[derive(Debug)]
13586pub struct SocketSetIpMulticastTtlResponder {
13587    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13588    tx_id: u32,
13589}
13590
13591/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13592/// if the responder is dropped without sending a response, so that the client
13593/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13594impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13595    fn drop(&mut self) {
13596        self.control_handle.shutdown();
13597        // Safety: drops once, never accessed again
13598        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13599    }
13600}
13601
13602impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13603    type ControlHandle = SocketControlHandle;
13604
13605    fn control_handle(&self) -> &SocketControlHandle {
13606        &self.control_handle
13607    }
13608
13609    fn drop_without_shutdown(mut self) {
13610        // Safety: drops once, never accessed again due to mem::forget
13611        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13612        // Prevent Drop from running (which would shut down the channel)
13613        std::mem::forget(self);
13614    }
13615}
13616
13617impl SocketSetIpMulticastTtlResponder {
13618    /// Sends a response to the FIDL transaction.
13619    ///
13620    /// Sets the channel to shutdown if an error occurs.
13621    pub fn send(
13622        self,
13623        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13624    ) -> Result<(), fidl::Error> {
13625        let _result = self.send_raw(result);
13626        if _result.is_err() {
13627            self.control_handle.shutdown();
13628        }
13629        self.drop_without_shutdown();
13630        _result
13631    }
13632
13633    /// Similar to "send" but does not shutdown the channel if an error occurs.
13634    pub fn send_no_shutdown_on_err(
13635        self,
13636        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13637    ) -> Result<(), fidl::Error> {
13638        let _result = self.send_raw(result);
13639        self.drop_without_shutdown();
13640        _result
13641    }
13642
13643    fn send_raw(
13644        &self,
13645        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13646    ) -> Result<(), fidl::Error> {
13647        self.control_handle.inner.send::<fidl::encoding::ResultType<
13648            fidl::encoding::EmptyStruct,
13649            fidl_fuchsia_posix::Errno,
13650        >>(
13651            result,
13652            self.tx_id,
13653            0x63134d53772916a1,
13654            fidl::encoding::DynamicFlags::empty(),
13655        )
13656    }
13657}
13658
13659#[must_use = "FIDL methods require a response to be sent"]
13660#[derive(Debug)]
13661pub struct SocketGetIpMulticastTtlResponder {
13662    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13663    tx_id: u32,
13664}
13665
13666/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13667/// if the responder is dropped without sending a response, so that the client
13668/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13669impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13670    fn drop(&mut self) {
13671        self.control_handle.shutdown();
13672        // Safety: drops once, never accessed again
13673        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13674    }
13675}
13676
13677impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13678    type ControlHandle = SocketControlHandle;
13679
13680    fn control_handle(&self) -> &SocketControlHandle {
13681        &self.control_handle
13682    }
13683
13684    fn drop_without_shutdown(mut self) {
13685        // Safety: drops once, never accessed again due to mem::forget
13686        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13687        // Prevent Drop from running (which would shut down the channel)
13688        std::mem::forget(self);
13689    }
13690}
13691
13692impl SocketGetIpMulticastTtlResponder {
13693    /// Sends a response to the FIDL transaction.
13694    ///
13695    /// Sets the channel to shutdown if an error occurs.
13696    pub fn send(
13697        self,
13698        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13699    ) -> Result<(), fidl::Error> {
13700        let _result = self.send_raw(result);
13701        if _result.is_err() {
13702            self.control_handle.shutdown();
13703        }
13704        self.drop_without_shutdown();
13705        _result
13706    }
13707
13708    /// Similar to "send" but does not shutdown the channel if an error occurs.
13709    pub fn send_no_shutdown_on_err(
13710        self,
13711        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13712    ) -> Result<(), fidl::Error> {
13713        let _result = self.send_raw(result);
13714        self.drop_without_shutdown();
13715        _result
13716    }
13717
13718    fn send_raw(
13719        &self,
13720        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13721    ) -> Result<(), fidl::Error> {
13722        self.control_handle.inner.send::<fidl::encoding::ResultType<
13723            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13724            fidl_fuchsia_posix::Errno,
13725        >>(
13726            result.map(|value| (value,)),
13727            self.tx_id,
13728            0x4665cd378f39e1a,
13729            fidl::encoding::DynamicFlags::empty(),
13730        )
13731    }
13732}
13733
13734#[must_use = "FIDL methods require a response to be sent"]
13735#[derive(Debug)]
13736pub struct SocketSetIpMulticastLoopbackResponder {
13737    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13738    tx_id: u32,
13739}
13740
13741/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13742/// if the responder is dropped without sending a response, so that the client
13743/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13744impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13745    fn drop(&mut self) {
13746        self.control_handle.shutdown();
13747        // Safety: drops once, never accessed again
13748        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13749    }
13750}
13751
13752impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13753    type ControlHandle = SocketControlHandle;
13754
13755    fn control_handle(&self) -> &SocketControlHandle {
13756        &self.control_handle
13757    }
13758
13759    fn drop_without_shutdown(mut self) {
13760        // Safety: drops once, never accessed again due to mem::forget
13761        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13762        // Prevent Drop from running (which would shut down the channel)
13763        std::mem::forget(self);
13764    }
13765}
13766
13767impl SocketSetIpMulticastLoopbackResponder {
13768    /// Sends a response to the FIDL transaction.
13769    ///
13770    /// Sets the channel to shutdown if an error occurs.
13771    pub fn send(
13772        self,
13773        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13774    ) -> Result<(), fidl::Error> {
13775        let _result = self.send_raw(result);
13776        if _result.is_err() {
13777            self.control_handle.shutdown();
13778        }
13779        self.drop_without_shutdown();
13780        _result
13781    }
13782
13783    /// Similar to "send" but does not shutdown the channel if an error occurs.
13784    pub fn send_no_shutdown_on_err(
13785        self,
13786        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13787    ) -> Result<(), fidl::Error> {
13788        let _result = self.send_raw(result);
13789        self.drop_without_shutdown();
13790        _result
13791    }
13792
13793    fn send_raw(
13794        &self,
13795        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13796    ) -> Result<(), fidl::Error> {
13797        self.control_handle.inner.send::<fidl::encoding::ResultType<
13798            fidl::encoding::EmptyStruct,
13799            fidl_fuchsia_posix::Errno,
13800        >>(
13801            result,
13802            self.tx_id,
13803            0x20c55c11f00943ea,
13804            fidl::encoding::DynamicFlags::empty(),
13805        )
13806    }
13807}
13808
13809#[must_use = "FIDL methods require a response to be sent"]
13810#[derive(Debug)]
13811pub struct SocketGetIpMulticastLoopbackResponder {
13812    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13813    tx_id: u32,
13814}
13815
13816/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13817/// if the responder is dropped without sending a response, so that the client
13818/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13819impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13820    fn drop(&mut self) {
13821        self.control_handle.shutdown();
13822        // Safety: drops once, never accessed again
13823        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13824    }
13825}
13826
13827impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13828    type ControlHandle = SocketControlHandle;
13829
13830    fn control_handle(&self) -> &SocketControlHandle {
13831        &self.control_handle
13832    }
13833
13834    fn drop_without_shutdown(mut self) {
13835        // Safety: drops once, never accessed again due to mem::forget
13836        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13837        // Prevent Drop from running (which would shut down the channel)
13838        std::mem::forget(self);
13839    }
13840}
13841
13842impl SocketGetIpMulticastLoopbackResponder {
13843    /// Sends a response to the FIDL transaction.
13844    ///
13845    /// Sets the channel to shutdown if an error occurs.
13846    pub fn send(
13847        self,
13848        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13849    ) -> Result<(), fidl::Error> {
13850        let _result = self.send_raw(result);
13851        if _result.is_err() {
13852            self.control_handle.shutdown();
13853        }
13854        self.drop_without_shutdown();
13855        _result
13856    }
13857
13858    /// Similar to "send" but does not shutdown the channel if an error occurs.
13859    pub fn send_no_shutdown_on_err(
13860        self,
13861        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13862    ) -> Result<(), fidl::Error> {
13863        let _result = self.send_raw(result);
13864        self.drop_without_shutdown();
13865        _result
13866    }
13867
13868    fn send_raw(
13869        &self,
13870        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13871    ) -> Result<(), fidl::Error> {
13872        self.control_handle.inner.send::<fidl::encoding::ResultType<
13873            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
13874            fidl_fuchsia_posix::Errno,
13875        >>(
13876            result.map(|value| (value,)),
13877            self.tx_id,
13878            0x3b6b26ff558298f2,
13879            fidl::encoding::DynamicFlags::empty(),
13880        )
13881    }
13882}
13883
13884#[must_use = "FIDL methods require a response to be sent"]
13885#[derive(Debug)]
13886pub struct SocketAddIpMembershipResponder {
13887    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13888    tx_id: u32,
13889}
13890
13891/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13892/// if the responder is dropped without sending a response, so that the client
13893/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13894impl std::ops::Drop for SocketAddIpMembershipResponder {
13895    fn drop(&mut self) {
13896        self.control_handle.shutdown();
13897        // Safety: drops once, never accessed again
13898        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13899    }
13900}
13901
13902impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
13903    type ControlHandle = SocketControlHandle;
13904
13905    fn control_handle(&self) -> &SocketControlHandle {
13906        &self.control_handle
13907    }
13908
13909    fn drop_without_shutdown(mut self) {
13910        // Safety: drops once, never accessed again due to mem::forget
13911        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13912        // Prevent Drop from running (which would shut down the channel)
13913        std::mem::forget(self);
13914    }
13915}
13916
13917impl SocketAddIpMembershipResponder {
13918    /// Sends a response to the FIDL transaction.
13919    ///
13920    /// Sets the channel to shutdown if an error occurs.
13921    pub fn send(
13922        self,
13923        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13924    ) -> Result<(), fidl::Error> {
13925        let _result = self.send_raw(result);
13926        if _result.is_err() {
13927            self.control_handle.shutdown();
13928        }
13929        self.drop_without_shutdown();
13930        _result
13931    }
13932
13933    /// Similar to "send" but does not shutdown the channel if an error occurs.
13934    pub fn send_no_shutdown_on_err(
13935        self,
13936        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13937    ) -> Result<(), fidl::Error> {
13938        let _result = self.send_raw(result);
13939        self.drop_without_shutdown();
13940        _result
13941    }
13942
13943    fn send_raw(
13944        &self,
13945        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13946    ) -> Result<(), fidl::Error> {
13947        self.control_handle.inner.send::<fidl::encoding::ResultType<
13948            fidl::encoding::EmptyStruct,
13949            fidl_fuchsia_posix::Errno,
13950        >>(
13951            result,
13952            self.tx_id,
13953            0x76bc7df115a3b4d0,
13954            fidl::encoding::DynamicFlags::empty(),
13955        )
13956    }
13957}
13958
13959#[must_use = "FIDL methods require a response to be sent"]
13960#[derive(Debug)]
13961pub struct SocketDropIpMembershipResponder {
13962    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13963    tx_id: u32,
13964}
13965
13966/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13967/// if the responder is dropped without sending a response, so that the client
13968/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13969impl std::ops::Drop for SocketDropIpMembershipResponder {
13970    fn drop(&mut self) {
13971        self.control_handle.shutdown();
13972        // Safety: drops once, never accessed again
13973        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13974    }
13975}
13976
13977impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
13978    type ControlHandle = SocketControlHandle;
13979
13980    fn control_handle(&self) -> &SocketControlHandle {
13981        &self.control_handle
13982    }
13983
13984    fn drop_without_shutdown(mut self) {
13985        // Safety: drops once, never accessed again due to mem::forget
13986        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13987        // Prevent Drop from running (which would shut down the channel)
13988        std::mem::forget(self);
13989    }
13990}
13991
13992impl SocketDropIpMembershipResponder {
13993    /// Sends a response to the FIDL transaction.
13994    ///
13995    /// Sets the channel to shutdown if an error occurs.
13996    pub fn send(
13997        self,
13998        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13999    ) -> Result<(), fidl::Error> {
14000        let _result = self.send_raw(result);
14001        if _result.is_err() {
14002            self.control_handle.shutdown();
14003        }
14004        self.drop_without_shutdown();
14005        _result
14006    }
14007
14008    /// Similar to "send" but does not shutdown the channel if an error occurs.
14009    pub fn send_no_shutdown_on_err(
14010        self,
14011        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14012    ) -> Result<(), fidl::Error> {
14013        let _result = self.send_raw(result);
14014        self.drop_without_shutdown();
14015        _result
14016    }
14017
14018    fn send_raw(
14019        &self,
14020        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14021    ) -> Result<(), fidl::Error> {
14022        self.control_handle.inner.send::<fidl::encoding::ResultType<
14023            fidl::encoding::EmptyStruct,
14024            fidl_fuchsia_posix::Errno,
14025        >>(
14026            result,
14027            self.tx_id,
14028            0x2888f3099188d03,
14029            fidl::encoding::DynamicFlags::empty(),
14030        )
14031    }
14032}
14033
14034#[must_use = "FIDL methods require a response to be sent"]
14035#[derive(Debug)]
14036pub struct SocketSetIpTransparentResponder {
14037    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14038    tx_id: u32,
14039}
14040
14041/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14042/// if the responder is dropped without sending a response, so that the client
14043/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14044impl std::ops::Drop for SocketSetIpTransparentResponder {
14045    fn drop(&mut self) {
14046        self.control_handle.shutdown();
14047        // Safety: drops once, never accessed again
14048        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14049    }
14050}
14051
14052impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
14053    type ControlHandle = SocketControlHandle;
14054
14055    fn control_handle(&self) -> &SocketControlHandle {
14056        &self.control_handle
14057    }
14058
14059    fn drop_without_shutdown(mut self) {
14060        // Safety: drops once, never accessed again due to mem::forget
14061        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14062        // Prevent Drop from running (which would shut down the channel)
14063        std::mem::forget(self);
14064    }
14065}
14066
14067impl SocketSetIpTransparentResponder {
14068    /// Sends a response to the FIDL transaction.
14069    ///
14070    /// Sets the channel to shutdown if an error occurs.
14071    pub fn send(
14072        self,
14073        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14074    ) -> Result<(), fidl::Error> {
14075        let _result = self.send_raw(result);
14076        if _result.is_err() {
14077            self.control_handle.shutdown();
14078        }
14079        self.drop_without_shutdown();
14080        _result
14081    }
14082
14083    /// Similar to "send" but does not shutdown the channel if an error occurs.
14084    pub fn send_no_shutdown_on_err(
14085        self,
14086        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14087    ) -> Result<(), fidl::Error> {
14088        let _result = self.send_raw(result);
14089        self.drop_without_shutdown();
14090        _result
14091    }
14092
14093    fn send_raw(
14094        &self,
14095        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14096    ) -> Result<(), fidl::Error> {
14097        self.control_handle.inner.send::<fidl::encoding::ResultType<
14098            fidl::encoding::EmptyStruct,
14099            fidl_fuchsia_posix::Errno,
14100        >>(
14101            result,
14102            self.tx_id,
14103            0x1ae532b0c066e3a0,
14104            fidl::encoding::DynamicFlags::empty(),
14105        )
14106    }
14107}
14108
14109#[must_use = "FIDL methods require a response to be sent"]
14110#[derive(Debug)]
14111pub struct SocketGetIpTransparentResponder {
14112    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14113    tx_id: u32,
14114}
14115
14116/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14117/// if the responder is dropped without sending a response, so that the client
14118/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14119impl std::ops::Drop for SocketGetIpTransparentResponder {
14120    fn drop(&mut self) {
14121        self.control_handle.shutdown();
14122        // Safety: drops once, never accessed again
14123        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14124    }
14125}
14126
14127impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
14128    type ControlHandle = SocketControlHandle;
14129
14130    fn control_handle(&self) -> &SocketControlHandle {
14131        &self.control_handle
14132    }
14133
14134    fn drop_without_shutdown(mut self) {
14135        // Safety: drops once, never accessed again due to mem::forget
14136        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14137        // Prevent Drop from running (which would shut down the channel)
14138        std::mem::forget(self);
14139    }
14140}
14141
14142impl SocketGetIpTransparentResponder {
14143    /// Sends a response to the FIDL transaction.
14144    ///
14145    /// Sets the channel to shutdown if an error occurs.
14146    pub fn send(
14147        self,
14148        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14149    ) -> Result<(), fidl::Error> {
14150        let _result = self.send_raw(result);
14151        if _result.is_err() {
14152            self.control_handle.shutdown();
14153        }
14154        self.drop_without_shutdown();
14155        _result
14156    }
14157
14158    /// Similar to "send" but does not shutdown the channel if an error occurs.
14159    pub fn send_no_shutdown_on_err(
14160        self,
14161        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14162    ) -> Result<(), fidl::Error> {
14163        let _result = self.send_raw(result);
14164        self.drop_without_shutdown();
14165        _result
14166    }
14167
14168    fn send_raw(
14169        &self,
14170        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14171    ) -> Result<(), fidl::Error> {
14172        self.control_handle.inner.send::<fidl::encoding::ResultType<
14173            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
14174            fidl_fuchsia_posix::Errno,
14175        >>(
14176            result.map(|value| (value,)),
14177            self.tx_id,
14178            0x51d43695962ebfb5,
14179            fidl::encoding::DynamicFlags::empty(),
14180        )
14181    }
14182}
14183
14184#[must_use = "FIDL methods require a response to be sent"]
14185#[derive(Debug)]
14186pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14187    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14188    tx_id: u32,
14189}
14190
14191/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14192/// if the responder is dropped without sending a response, so that the client
14193/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14194impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14195    fn drop(&mut self) {
14196        self.control_handle.shutdown();
14197        // Safety: drops once, never accessed again
14198        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14199    }
14200}
14201
14202impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14203    type ControlHandle = SocketControlHandle;
14204
14205    fn control_handle(&self) -> &SocketControlHandle {
14206        &self.control_handle
14207    }
14208
14209    fn drop_without_shutdown(mut self) {
14210        // Safety: drops once, never accessed again due to mem::forget
14211        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14212        // Prevent Drop from running (which would shut down the channel)
14213        std::mem::forget(self);
14214    }
14215}
14216
14217impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14218    /// Sends a response to the FIDL transaction.
14219    ///
14220    /// Sets the channel to shutdown if an error occurs.
14221    pub fn send(
14222        self,
14223        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14224    ) -> Result<(), fidl::Error> {
14225        let _result = self.send_raw(result);
14226        if _result.is_err() {
14227            self.control_handle.shutdown();
14228        }
14229        self.drop_without_shutdown();
14230        _result
14231    }
14232
14233    /// Similar to "send" but does not shutdown the channel if an error occurs.
14234    pub fn send_no_shutdown_on_err(
14235        self,
14236        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14237    ) -> Result<(), fidl::Error> {
14238        let _result = self.send_raw(result);
14239        self.drop_without_shutdown();
14240        _result
14241    }
14242
14243    fn send_raw(
14244        &self,
14245        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14246    ) -> Result<(), fidl::Error> {
14247        self.control_handle.inner.send::<fidl::encoding::ResultType<
14248            fidl::encoding::EmptyStruct,
14249            fidl_fuchsia_posix::Errno,
14250        >>(
14251            result,
14252            self.tx_id,
14253            0x4722b4ce52f7840,
14254            fidl::encoding::DynamicFlags::empty(),
14255        )
14256    }
14257}
14258
14259#[must_use = "FIDL methods require a response to be sent"]
14260#[derive(Debug)]
14261pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14262    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14263    tx_id: u32,
14264}
14265
14266/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14267/// if the responder is dropped without sending a response, so that the client
14268/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14269impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14270    fn drop(&mut self) {
14271        self.control_handle.shutdown();
14272        // Safety: drops once, never accessed again
14273        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14274    }
14275}
14276
14277impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14278    type ControlHandle = SocketControlHandle;
14279
14280    fn control_handle(&self) -> &SocketControlHandle {
14281        &self.control_handle
14282    }
14283
14284    fn drop_without_shutdown(mut self) {
14285        // Safety: drops once, never accessed again due to mem::forget
14286        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14287        // Prevent Drop from running (which would shut down the channel)
14288        std::mem::forget(self);
14289    }
14290}
14291
14292impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14293    /// Sends a response to the FIDL transaction.
14294    ///
14295    /// Sets the channel to shutdown if an error occurs.
14296    pub fn send(
14297        self,
14298        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14299    ) -> Result<(), fidl::Error> {
14300        let _result = self.send_raw(result);
14301        if _result.is_err() {
14302            self.control_handle.shutdown();
14303        }
14304        self.drop_without_shutdown();
14305        _result
14306    }
14307
14308    /// Similar to "send" but does not shutdown the channel if an error occurs.
14309    pub fn send_no_shutdown_on_err(
14310        self,
14311        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14312    ) -> Result<(), fidl::Error> {
14313        let _result = self.send_raw(result);
14314        self.drop_without_shutdown();
14315        _result
14316    }
14317
14318    fn send_raw(
14319        &self,
14320        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14321    ) -> Result<(), fidl::Error> {
14322        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14323            result.map(|value| (value,)),
14324            self.tx_id,
14325            0x2a0e7dc5d6bfdfe9,
14326            fidl::encoding::DynamicFlags::empty()
14327        )
14328    }
14329}
14330
14331#[must_use = "FIDL methods require a response to be sent"]
14332#[derive(Debug)]
14333pub struct SocketAddIpv6MembershipResponder {
14334    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14335    tx_id: u32,
14336}
14337
14338/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14339/// if the responder is dropped without sending a response, so that the client
14340/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14341impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14342    fn drop(&mut self) {
14343        self.control_handle.shutdown();
14344        // Safety: drops once, never accessed again
14345        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14346    }
14347}
14348
14349impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14350    type ControlHandle = SocketControlHandle;
14351
14352    fn control_handle(&self) -> &SocketControlHandle {
14353        &self.control_handle
14354    }
14355
14356    fn drop_without_shutdown(mut self) {
14357        // Safety: drops once, never accessed again due to mem::forget
14358        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14359        // Prevent Drop from running (which would shut down the channel)
14360        std::mem::forget(self);
14361    }
14362}
14363
14364impl SocketAddIpv6MembershipResponder {
14365    /// Sends a response to the FIDL transaction.
14366    ///
14367    /// Sets the channel to shutdown if an error occurs.
14368    pub fn send(
14369        self,
14370        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14371    ) -> Result<(), fidl::Error> {
14372        let _result = self.send_raw(result);
14373        if _result.is_err() {
14374            self.control_handle.shutdown();
14375        }
14376        self.drop_without_shutdown();
14377        _result
14378    }
14379
14380    /// Similar to "send" but does not shutdown the channel if an error occurs.
14381    pub fn send_no_shutdown_on_err(
14382        self,
14383        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14384    ) -> Result<(), fidl::Error> {
14385        let _result = self.send_raw(result);
14386        self.drop_without_shutdown();
14387        _result
14388    }
14389
14390    fn send_raw(
14391        &self,
14392        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14393    ) -> Result<(), fidl::Error> {
14394        self.control_handle.inner.send::<fidl::encoding::ResultType<
14395            fidl::encoding::EmptyStruct,
14396            fidl_fuchsia_posix::Errno,
14397        >>(
14398            result,
14399            self.tx_id,
14400            0x7c94727acb4ea4b3,
14401            fidl::encoding::DynamicFlags::empty(),
14402        )
14403    }
14404}
14405
14406#[must_use = "FIDL methods require a response to be sent"]
14407#[derive(Debug)]
14408pub struct SocketDropIpv6MembershipResponder {
14409    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14410    tx_id: u32,
14411}
14412
14413/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14414/// if the responder is dropped without sending a response, so that the client
14415/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14416impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14417    fn drop(&mut self) {
14418        self.control_handle.shutdown();
14419        // Safety: drops once, never accessed again
14420        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14421    }
14422}
14423
14424impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14425    type ControlHandle = SocketControlHandle;
14426
14427    fn control_handle(&self) -> &SocketControlHandle {
14428        &self.control_handle
14429    }
14430
14431    fn drop_without_shutdown(mut self) {
14432        // Safety: drops once, never accessed again due to mem::forget
14433        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14434        // Prevent Drop from running (which would shut down the channel)
14435        std::mem::forget(self);
14436    }
14437}
14438
14439impl SocketDropIpv6MembershipResponder {
14440    /// Sends a response to the FIDL transaction.
14441    ///
14442    /// Sets the channel to shutdown if an error occurs.
14443    pub fn send(
14444        self,
14445        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14446    ) -> Result<(), fidl::Error> {
14447        let _result = self.send_raw(result);
14448        if _result.is_err() {
14449            self.control_handle.shutdown();
14450        }
14451        self.drop_without_shutdown();
14452        _result
14453    }
14454
14455    /// Similar to "send" but does not shutdown the channel if an error occurs.
14456    pub fn send_no_shutdown_on_err(
14457        self,
14458        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14459    ) -> Result<(), fidl::Error> {
14460        let _result = self.send_raw(result);
14461        self.drop_without_shutdown();
14462        _result
14463    }
14464
14465    fn send_raw(
14466        &self,
14467        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14468    ) -> Result<(), fidl::Error> {
14469        self.control_handle.inner.send::<fidl::encoding::ResultType<
14470            fidl::encoding::EmptyStruct,
14471            fidl_fuchsia_posix::Errno,
14472        >>(
14473            result,
14474            self.tx_id,
14475            0x42104c70ccaba304,
14476            fidl::encoding::DynamicFlags::empty(),
14477        )
14478    }
14479}
14480
14481#[must_use = "FIDL methods require a response to be sent"]
14482#[derive(Debug)]
14483pub struct SocketSetIpv6MulticastInterfaceResponder {
14484    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14485    tx_id: u32,
14486}
14487
14488/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14489/// if the responder is dropped without sending a response, so that the client
14490/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14491impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14492    fn drop(&mut self) {
14493        self.control_handle.shutdown();
14494        // Safety: drops once, never accessed again
14495        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14496    }
14497}
14498
14499impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14500    type ControlHandle = SocketControlHandle;
14501
14502    fn control_handle(&self) -> &SocketControlHandle {
14503        &self.control_handle
14504    }
14505
14506    fn drop_without_shutdown(mut self) {
14507        // Safety: drops once, never accessed again due to mem::forget
14508        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14509        // Prevent Drop from running (which would shut down the channel)
14510        std::mem::forget(self);
14511    }
14512}
14513
14514impl SocketSetIpv6MulticastInterfaceResponder {
14515    /// Sends a response to the FIDL transaction.
14516    ///
14517    /// Sets the channel to shutdown if an error occurs.
14518    pub fn send(
14519        self,
14520        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14521    ) -> Result<(), fidl::Error> {
14522        let _result = self.send_raw(result);
14523        if _result.is_err() {
14524            self.control_handle.shutdown();
14525        }
14526        self.drop_without_shutdown();
14527        _result
14528    }
14529
14530    /// Similar to "send" but does not shutdown the channel if an error occurs.
14531    pub fn send_no_shutdown_on_err(
14532        self,
14533        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14534    ) -> Result<(), fidl::Error> {
14535        let _result = self.send_raw(result);
14536        self.drop_without_shutdown();
14537        _result
14538    }
14539
14540    fn send_raw(
14541        &self,
14542        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14543    ) -> Result<(), fidl::Error> {
14544        self.control_handle.inner.send::<fidl::encoding::ResultType<
14545            fidl::encoding::EmptyStruct,
14546            fidl_fuchsia_posix::Errno,
14547        >>(
14548            result,
14549            self.tx_id,
14550            0x135f76db3774ab3b,
14551            fidl::encoding::DynamicFlags::empty(),
14552        )
14553    }
14554}
14555
14556#[must_use = "FIDL methods require a response to be sent"]
14557#[derive(Debug)]
14558pub struct SocketGetIpv6MulticastInterfaceResponder {
14559    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14560    tx_id: u32,
14561}
14562
14563/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14564/// if the responder is dropped without sending a response, so that the client
14565/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14566impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14567    fn drop(&mut self) {
14568        self.control_handle.shutdown();
14569        // Safety: drops once, never accessed again
14570        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14571    }
14572}
14573
14574impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14575    type ControlHandle = SocketControlHandle;
14576
14577    fn control_handle(&self) -> &SocketControlHandle {
14578        &self.control_handle
14579    }
14580
14581    fn drop_without_shutdown(mut self) {
14582        // Safety: drops once, never accessed again due to mem::forget
14583        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14584        // Prevent Drop from running (which would shut down the channel)
14585        std::mem::forget(self);
14586    }
14587}
14588
14589impl SocketGetIpv6MulticastInterfaceResponder {
14590    /// Sends a response to the FIDL transaction.
14591    ///
14592    /// Sets the channel to shutdown if an error occurs.
14593    pub fn send(
14594        self,
14595        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14596    ) -> Result<(), fidl::Error> {
14597        let _result = self.send_raw(result);
14598        if _result.is_err() {
14599            self.control_handle.shutdown();
14600        }
14601        self.drop_without_shutdown();
14602        _result
14603    }
14604
14605    /// Similar to "send" but does not shutdown the channel if an error occurs.
14606    pub fn send_no_shutdown_on_err(
14607        self,
14608        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14609    ) -> Result<(), fidl::Error> {
14610        let _result = self.send_raw(result);
14611        self.drop_without_shutdown();
14612        _result
14613    }
14614
14615    fn send_raw(
14616        &self,
14617        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14618    ) -> Result<(), fidl::Error> {
14619        self.control_handle.inner.send::<fidl::encoding::ResultType<
14620            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14621            fidl_fuchsia_posix::Errno,
14622        >>(
14623            result.map(|value| (value,)),
14624            self.tx_id,
14625            0x1f26fcdd348f1882,
14626            fidl::encoding::DynamicFlags::empty(),
14627        )
14628    }
14629}
14630
14631#[must_use = "FIDL methods require a response to be sent"]
14632#[derive(Debug)]
14633pub struct SocketSetIpv6UnicastHopsResponder {
14634    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14635    tx_id: u32,
14636}
14637
14638/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14639/// if the responder is dropped without sending a response, so that the client
14640/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14641impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14642    fn drop(&mut self) {
14643        self.control_handle.shutdown();
14644        // Safety: drops once, never accessed again
14645        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14646    }
14647}
14648
14649impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14650    type ControlHandle = SocketControlHandle;
14651
14652    fn control_handle(&self) -> &SocketControlHandle {
14653        &self.control_handle
14654    }
14655
14656    fn drop_without_shutdown(mut self) {
14657        // Safety: drops once, never accessed again due to mem::forget
14658        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14659        // Prevent Drop from running (which would shut down the channel)
14660        std::mem::forget(self);
14661    }
14662}
14663
14664impl SocketSetIpv6UnicastHopsResponder {
14665    /// Sends a response to the FIDL transaction.
14666    ///
14667    /// Sets the channel to shutdown if an error occurs.
14668    pub fn send(
14669        self,
14670        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14671    ) -> Result<(), fidl::Error> {
14672        let _result = self.send_raw(result);
14673        if _result.is_err() {
14674            self.control_handle.shutdown();
14675        }
14676        self.drop_without_shutdown();
14677        _result
14678    }
14679
14680    /// Similar to "send" but does not shutdown the channel if an error occurs.
14681    pub fn send_no_shutdown_on_err(
14682        self,
14683        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14684    ) -> Result<(), fidl::Error> {
14685        let _result = self.send_raw(result);
14686        self.drop_without_shutdown();
14687        _result
14688    }
14689
14690    fn send_raw(
14691        &self,
14692        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14693    ) -> Result<(), fidl::Error> {
14694        self.control_handle.inner.send::<fidl::encoding::ResultType<
14695            fidl::encoding::EmptyStruct,
14696            fidl_fuchsia_posix::Errno,
14697        >>(
14698            result,
14699            self.tx_id,
14700            0x157d51e98f462859,
14701            fidl::encoding::DynamicFlags::empty(),
14702        )
14703    }
14704}
14705
14706#[must_use = "FIDL methods require a response to be sent"]
14707#[derive(Debug)]
14708pub struct SocketGetIpv6UnicastHopsResponder {
14709    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14710    tx_id: u32,
14711}
14712
14713/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14714/// if the responder is dropped without sending a response, so that the client
14715/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14716impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14717    fn drop(&mut self) {
14718        self.control_handle.shutdown();
14719        // Safety: drops once, never accessed again
14720        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14721    }
14722}
14723
14724impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14725    type ControlHandle = SocketControlHandle;
14726
14727    fn control_handle(&self) -> &SocketControlHandle {
14728        &self.control_handle
14729    }
14730
14731    fn drop_without_shutdown(mut self) {
14732        // Safety: drops once, never accessed again due to mem::forget
14733        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14734        // Prevent Drop from running (which would shut down the channel)
14735        std::mem::forget(self);
14736    }
14737}
14738
14739impl SocketGetIpv6UnicastHopsResponder {
14740    /// Sends a response to the FIDL transaction.
14741    ///
14742    /// Sets the channel to shutdown if an error occurs.
14743    pub fn send(
14744        self,
14745        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14746    ) -> Result<(), fidl::Error> {
14747        let _result = self.send_raw(result);
14748        if _result.is_err() {
14749            self.control_handle.shutdown();
14750        }
14751        self.drop_without_shutdown();
14752        _result
14753    }
14754
14755    /// Similar to "send" but does not shutdown the channel if an error occurs.
14756    pub fn send_no_shutdown_on_err(
14757        self,
14758        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14759    ) -> Result<(), fidl::Error> {
14760        let _result = self.send_raw(result);
14761        self.drop_without_shutdown();
14762        _result
14763    }
14764
14765    fn send_raw(
14766        &self,
14767        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14768    ) -> Result<(), fidl::Error> {
14769        self.control_handle.inner.send::<fidl::encoding::ResultType<
14770            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14771            fidl_fuchsia_posix::Errno,
14772        >>(
14773            result.map(|value| (value,)),
14774            self.tx_id,
14775            0x21f4641cad8bd8d2,
14776            fidl::encoding::DynamicFlags::empty(),
14777        )
14778    }
14779}
14780
14781#[must_use = "FIDL methods require a response to be sent"]
14782#[derive(Debug)]
14783pub struct SocketSetIpv6ReceiveHopLimitResponder {
14784    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14785    tx_id: u32,
14786}
14787
14788/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14789/// if the responder is dropped without sending a response, so that the client
14790/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14791impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14792    fn drop(&mut self) {
14793        self.control_handle.shutdown();
14794        // Safety: drops once, never accessed again
14795        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14796    }
14797}
14798
14799impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14800    type ControlHandle = SocketControlHandle;
14801
14802    fn control_handle(&self) -> &SocketControlHandle {
14803        &self.control_handle
14804    }
14805
14806    fn drop_without_shutdown(mut self) {
14807        // Safety: drops once, never accessed again due to mem::forget
14808        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14809        // Prevent Drop from running (which would shut down the channel)
14810        std::mem::forget(self);
14811    }
14812}
14813
14814impl SocketSetIpv6ReceiveHopLimitResponder {
14815    /// Sends a response to the FIDL transaction.
14816    ///
14817    /// Sets the channel to shutdown if an error occurs.
14818    pub fn send(
14819        self,
14820        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14821    ) -> Result<(), fidl::Error> {
14822        let _result = self.send_raw(result);
14823        if _result.is_err() {
14824            self.control_handle.shutdown();
14825        }
14826        self.drop_without_shutdown();
14827        _result
14828    }
14829
14830    /// Similar to "send" but does not shutdown the channel if an error occurs.
14831    pub fn send_no_shutdown_on_err(
14832        self,
14833        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14834    ) -> Result<(), fidl::Error> {
14835        let _result = self.send_raw(result);
14836        self.drop_without_shutdown();
14837        _result
14838    }
14839
14840    fn send_raw(
14841        &self,
14842        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14843    ) -> Result<(), fidl::Error> {
14844        self.control_handle.inner.send::<fidl::encoding::ResultType<
14845            fidl::encoding::EmptyStruct,
14846            fidl_fuchsia_posix::Errno,
14847        >>(
14848            result,
14849            self.tx_id,
14850            0x5c24808ed2e84a1e,
14851            fidl::encoding::DynamicFlags::empty(),
14852        )
14853    }
14854}
14855
14856#[must_use = "FIDL methods require a response to be sent"]
14857#[derive(Debug)]
14858pub struct SocketGetIpv6ReceiveHopLimitResponder {
14859    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14860    tx_id: u32,
14861}
14862
14863/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14864/// if the responder is dropped without sending a response, so that the client
14865/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14866impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
14867    fn drop(&mut self) {
14868        self.control_handle.shutdown();
14869        // Safety: drops once, never accessed again
14870        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14871    }
14872}
14873
14874impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
14875    type ControlHandle = SocketControlHandle;
14876
14877    fn control_handle(&self) -> &SocketControlHandle {
14878        &self.control_handle
14879    }
14880
14881    fn drop_without_shutdown(mut self) {
14882        // Safety: drops once, never accessed again due to mem::forget
14883        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14884        // Prevent Drop from running (which would shut down the channel)
14885        std::mem::forget(self);
14886    }
14887}
14888
14889impl SocketGetIpv6ReceiveHopLimitResponder {
14890    /// Sends a response to the FIDL transaction.
14891    ///
14892    /// Sets the channel to shutdown if an error occurs.
14893    pub fn send(
14894        self,
14895        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14896    ) -> Result<(), fidl::Error> {
14897        let _result = self.send_raw(result);
14898        if _result.is_err() {
14899            self.control_handle.shutdown();
14900        }
14901        self.drop_without_shutdown();
14902        _result
14903    }
14904
14905    /// Similar to "send" but does not shutdown the channel if an error occurs.
14906    pub fn send_no_shutdown_on_err(
14907        self,
14908        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14909    ) -> Result<(), fidl::Error> {
14910        let _result = self.send_raw(result);
14911        self.drop_without_shutdown();
14912        _result
14913    }
14914
14915    fn send_raw(
14916        &self,
14917        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14918    ) -> Result<(), fidl::Error> {
14919        self.control_handle.inner.send::<fidl::encoding::ResultType<
14920            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
14921            fidl_fuchsia_posix::Errno,
14922        >>(
14923            result.map(|value| (value,)),
14924            self.tx_id,
14925            0x341e06689885b4c0,
14926            fidl::encoding::DynamicFlags::empty(),
14927        )
14928    }
14929}
14930
14931#[must_use = "FIDL methods require a response to be sent"]
14932#[derive(Debug)]
14933pub struct SocketSetIpv6MulticastHopsResponder {
14934    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14935    tx_id: u32,
14936}
14937
14938/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14939/// if the responder is dropped without sending a response, so that the client
14940/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14941impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
14942    fn drop(&mut self) {
14943        self.control_handle.shutdown();
14944        // Safety: drops once, never accessed again
14945        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14946    }
14947}
14948
14949impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
14950    type ControlHandle = SocketControlHandle;
14951
14952    fn control_handle(&self) -> &SocketControlHandle {
14953        &self.control_handle
14954    }
14955
14956    fn drop_without_shutdown(mut self) {
14957        // Safety: drops once, never accessed again due to mem::forget
14958        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14959        // Prevent Drop from running (which would shut down the channel)
14960        std::mem::forget(self);
14961    }
14962}
14963
14964impl SocketSetIpv6MulticastHopsResponder {
14965    /// Sends a response to the FIDL transaction.
14966    ///
14967    /// Sets the channel to shutdown if an error occurs.
14968    pub fn send(
14969        self,
14970        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14971    ) -> Result<(), fidl::Error> {
14972        let _result = self.send_raw(result);
14973        if _result.is_err() {
14974            self.control_handle.shutdown();
14975        }
14976        self.drop_without_shutdown();
14977        _result
14978    }
14979
14980    /// Similar to "send" but does not shutdown the channel if an error occurs.
14981    pub fn send_no_shutdown_on_err(
14982        self,
14983        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14984    ) -> Result<(), fidl::Error> {
14985        let _result = self.send_raw(result);
14986        self.drop_without_shutdown();
14987        _result
14988    }
14989
14990    fn send_raw(
14991        &self,
14992        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14993    ) -> Result<(), fidl::Error> {
14994        self.control_handle.inner.send::<fidl::encoding::ResultType<
14995            fidl::encoding::EmptyStruct,
14996            fidl_fuchsia_posix::Errno,
14997        >>(
14998            result,
14999            self.tx_id,
15000            0x25b9cd4d181f82c1,
15001            fidl::encoding::DynamicFlags::empty(),
15002        )
15003    }
15004}
15005
15006#[must_use = "FIDL methods require a response to be sent"]
15007#[derive(Debug)]
15008pub struct SocketGetIpv6MulticastHopsResponder {
15009    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15010    tx_id: u32,
15011}
15012
15013/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15014/// if the responder is dropped without sending a response, so that the client
15015/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15016impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
15017    fn drop(&mut self) {
15018        self.control_handle.shutdown();
15019        // Safety: drops once, never accessed again
15020        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15021    }
15022}
15023
15024impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
15025    type ControlHandle = SocketControlHandle;
15026
15027    fn control_handle(&self) -> &SocketControlHandle {
15028        &self.control_handle
15029    }
15030
15031    fn drop_without_shutdown(mut self) {
15032        // Safety: drops once, never accessed again due to mem::forget
15033        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15034        // Prevent Drop from running (which would shut down the channel)
15035        std::mem::forget(self);
15036    }
15037}
15038
15039impl SocketGetIpv6MulticastHopsResponder {
15040    /// Sends a response to the FIDL transaction.
15041    ///
15042    /// Sets the channel to shutdown if an error occurs.
15043    pub fn send(
15044        self,
15045        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15046    ) -> Result<(), fidl::Error> {
15047        let _result = self.send_raw(result);
15048        if _result.is_err() {
15049            self.control_handle.shutdown();
15050        }
15051        self.drop_without_shutdown();
15052        _result
15053    }
15054
15055    /// Similar to "send" but does not shutdown the channel if an error occurs.
15056    pub fn send_no_shutdown_on_err(
15057        self,
15058        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15059    ) -> Result<(), fidl::Error> {
15060        let _result = self.send_raw(result);
15061        self.drop_without_shutdown();
15062        _result
15063    }
15064
15065    fn send_raw(
15066        &self,
15067        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15068    ) -> Result<(), fidl::Error> {
15069        self.control_handle.inner.send::<fidl::encoding::ResultType<
15070            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
15071            fidl_fuchsia_posix::Errno,
15072        >>(
15073            result.map(|value| (value,)),
15074            self.tx_id,
15075            0x52916948a365012a,
15076            fidl::encoding::DynamicFlags::empty(),
15077        )
15078    }
15079}
15080
15081#[must_use = "FIDL methods require a response to be sent"]
15082#[derive(Debug)]
15083pub struct SocketSetIpv6MulticastLoopbackResponder {
15084    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15085    tx_id: u32,
15086}
15087
15088/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15089/// if the responder is dropped without sending a response, so that the client
15090/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15091impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
15092    fn drop(&mut self) {
15093        self.control_handle.shutdown();
15094        // Safety: drops once, never accessed again
15095        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15096    }
15097}
15098
15099impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
15100    type ControlHandle = SocketControlHandle;
15101
15102    fn control_handle(&self) -> &SocketControlHandle {
15103        &self.control_handle
15104    }
15105
15106    fn drop_without_shutdown(mut self) {
15107        // Safety: drops once, never accessed again due to mem::forget
15108        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15109        // Prevent Drop from running (which would shut down the channel)
15110        std::mem::forget(self);
15111    }
15112}
15113
15114impl SocketSetIpv6MulticastLoopbackResponder {
15115    /// Sends a response to the FIDL transaction.
15116    ///
15117    /// Sets the channel to shutdown if an error occurs.
15118    pub fn send(
15119        self,
15120        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15121    ) -> Result<(), fidl::Error> {
15122        let _result = self.send_raw(result);
15123        if _result.is_err() {
15124            self.control_handle.shutdown();
15125        }
15126        self.drop_without_shutdown();
15127        _result
15128    }
15129
15130    /// Similar to "send" but does not shutdown the channel if an error occurs.
15131    pub fn send_no_shutdown_on_err(
15132        self,
15133        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15134    ) -> Result<(), fidl::Error> {
15135        let _result = self.send_raw(result);
15136        self.drop_without_shutdown();
15137        _result
15138    }
15139
15140    fn send_raw(
15141        &self,
15142        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15143    ) -> Result<(), fidl::Error> {
15144        self.control_handle.inner.send::<fidl::encoding::ResultType<
15145            fidl::encoding::EmptyStruct,
15146            fidl_fuchsia_posix::Errno,
15147        >>(
15148            result,
15149            self.tx_id,
15150            0x55701c409ff41b40,
15151            fidl::encoding::DynamicFlags::empty(),
15152        )
15153    }
15154}
15155
15156#[must_use = "FIDL methods require a response to be sent"]
15157#[derive(Debug)]
15158pub struct SocketGetIpv6MulticastLoopbackResponder {
15159    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15160    tx_id: u32,
15161}
15162
15163/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15164/// if the responder is dropped without sending a response, so that the client
15165/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15166impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
15167    fn drop(&mut self) {
15168        self.control_handle.shutdown();
15169        // Safety: drops once, never accessed again
15170        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15171    }
15172}
15173
15174impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
15175    type ControlHandle = SocketControlHandle;
15176
15177    fn control_handle(&self) -> &SocketControlHandle {
15178        &self.control_handle
15179    }
15180
15181    fn drop_without_shutdown(mut self) {
15182        // Safety: drops once, never accessed again due to mem::forget
15183        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15184        // Prevent Drop from running (which would shut down the channel)
15185        std::mem::forget(self);
15186    }
15187}
15188
15189impl SocketGetIpv6MulticastLoopbackResponder {
15190    /// Sends a response to the FIDL transaction.
15191    ///
15192    /// Sets the channel to shutdown if an error occurs.
15193    pub fn send(
15194        self,
15195        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15196    ) -> Result<(), fidl::Error> {
15197        let _result = self.send_raw(result);
15198        if _result.is_err() {
15199            self.control_handle.shutdown();
15200        }
15201        self.drop_without_shutdown();
15202        _result
15203    }
15204
15205    /// Similar to "send" but does not shutdown the channel if an error occurs.
15206    pub fn send_no_shutdown_on_err(
15207        self,
15208        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15209    ) -> Result<(), fidl::Error> {
15210        let _result = self.send_raw(result);
15211        self.drop_without_shutdown();
15212        _result
15213    }
15214
15215    fn send_raw(
15216        &self,
15217        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15218    ) -> Result<(), fidl::Error> {
15219        self.control_handle.inner.send::<fidl::encoding::ResultType<
15220            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15221            fidl_fuchsia_posix::Errno,
15222        >>(
15223            result.map(|value| (value,)),
15224            self.tx_id,
15225            0x4415b701fde319c3,
15226            fidl::encoding::DynamicFlags::empty(),
15227        )
15228    }
15229}
15230
15231#[must_use = "FIDL methods require a response to be sent"]
15232#[derive(Debug)]
15233pub struct SocketSetIpv6OnlyResponder {
15234    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15235    tx_id: u32,
15236}
15237
15238/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15239/// if the responder is dropped without sending a response, so that the client
15240/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15241impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15242    fn drop(&mut self) {
15243        self.control_handle.shutdown();
15244        // Safety: drops once, never accessed again
15245        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15246    }
15247}
15248
15249impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15250    type ControlHandle = SocketControlHandle;
15251
15252    fn control_handle(&self) -> &SocketControlHandle {
15253        &self.control_handle
15254    }
15255
15256    fn drop_without_shutdown(mut self) {
15257        // Safety: drops once, never accessed again due to mem::forget
15258        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15259        // Prevent Drop from running (which would shut down the channel)
15260        std::mem::forget(self);
15261    }
15262}
15263
15264impl SocketSetIpv6OnlyResponder {
15265    /// Sends a response to the FIDL transaction.
15266    ///
15267    /// Sets the channel to shutdown if an error occurs.
15268    pub fn send(
15269        self,
15270        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15271    ) -> Result<(), fidl::Error> {
15272        let _result = self.send_raw(result);
15273        if _result.is_err() {
15274            self.control_handle.shutdown();
15275        }
15276        self.drop_without_shutdown();
15277        _result
15278    }
15279
15280    /// Similar to "send" but does not shutdown the channel if an error occurs.
15281    pub fn send_no_shutdown_on_err(
15282        self,
15283        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15284    ) -> Result<(), fidl::Error> {
15285        let _result = self.send_raw(result);
15286        self.drop_without_shutdown();
15287        _result
15288    }
15289
15290    fn send_raw(
15291        &self,
15292        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15293    ) -> Result<(), fidl::Error> {
15294        self.control_handle.inner.send::<fidl::encoding::ResultType<
15295            fidl::encoding::EmptyStruct,
15296            fidl_fuchsia_posix::Errno,
15297        >>(
15298            result,
15299            self.tx_id,
15300            0x4873f1364758cbba,
15301            fidl::encoding::DynamicFlags::empty(),
15302        )
15303    }
15304}
15305
15306#[must_use = "FIDL methods require a response to be sent"]
15307#[derive(Debug)]
15308pub struct SocketGetIpv6OnlyResponder {
15309    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15310    tx_id: u32,
15311}
15312
15313/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15314/// if the responder is dropped without sending a response, so that the client
15315/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15316impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15317    fn drop(&mut self) {
15318        self.control_handle.shutdown();
15319        // Safety: drops once, never accessed again
15320        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15321    }
15322}
15323
15324impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15325    type ControlHandle = SocketControlHandle;
15326
15327    fn control_handle(&self) -> &SocketControlHandle {
15328        &self.control_handle
15329    }
15330
15331    fn drop_without_shutdown(mut self) {
15332        // Safety: drops once, never accessed again due to mem::forget
15333        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15334        // Prevent Drop from running (which would shut down the channel)
15335        std::mem::forget(self);
15336    }
15337}
15338
15339impl SocketGetIpv6OnlyResponder {
15340    /// Sends a response to the FIDL transaction.
15341    ///
15342    /// Sets the channel to shutdown if an error occurs.
15343    pub fn send(
15344        self,
15345        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15346    ) -> Result<(), fidl::Error> {
15347        let _result = self.send_raw(result);
15348        if _result.is_err() {
15349            self.control_handle.shutdown();
15350        }
15351        self.drop_without_shutdown();
15352        _result
15353    }
15354
15355    /// Similar to "send" but does not shutdown the channel if an error occurs.
15356    pub fn send_no_shutdown_on_err(
15357        self,
15358        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15359    ) -> Result<(), fidl::Error> {
15360        let _result = self.send_raw(result);
15361        self.drop_without_shutdown();
15362        _result
15363    }
15364
15365    fn send_raw(
15366        &self,
15367        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15368    ) -> Result<(), fidl::Error> {
15369        self.control_handle.inner.send::<fidl::encoding::ResultType<
15370            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15371            fidl_fuchsia_posix::Errno,
15372        >>(
15373            result.map(|value| (value,)),
15374            self.tx_id,
15375            0x4aa3340a1a26b89c,
15376            fidl::encoding::DynamicFlags::empty(),
15377        )
15378    }
15379}
15380
15381#[must_use = "FIDL methods require a response to be sent"]
15382#[derive(Debug)]
15383pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15384    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15385    tx_id: u32,
15386}
15387
15388/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15389/// if the responder is dropped without sending a response, so that the client
15390/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15391impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15392    fn drop(&mut self) {
15393        self.control_handle.shutdown();
15394        // Safety: drops once, never accessed again
15395        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15396    }
15397}
15398
15399impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15400    type ControlHandle = SocketControlHandle;
15401
15402    fn control_handle(&self) -> &SocketControlHandle {
15403        &self.control_handle
15404    }
15405
15406    fn drop_without_shutdown(mut self) {
15407        // Safety: drops once, never accessed again due to mem::forget
15408        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15409        // Prevent Drop from running (which would shut down the channel)
15410        std::mem::forget(self);
15411    }
15412}
15413
15414impl SocketSetIpv6ReceiveTrafficClassResponder {
15415    /// Sends a response to the FIDL transaction.
15416    ///
15417    /// Sets the channel to shutdown if an error occurs.
15418    pub fn send(
15419        self,
15420        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15421    ) -> Result<(), fidl::Error> {
15422        let _result = self.send_raw(result);
15423        if _result.is_err() {
15424            self.control_handle.shutdown();
15425        }
15426        self.drop_without_shutdown();
15427        _result
15428    }
15429
15430    /// Similar to "send" but does not shutdown the channel if an error occurs.
15431    pub fn send_no_shutdown_on_err(
15432        self,
15433        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15434    ) -> Result<(), fidl::Error> {
15435        let _result = self.send_raw(result);
15436        self.drop_without_shutdown();
15437        _result
15438    }
15439
15440    fn send_raw(
15441        &self,
15442        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15443    ) -> Result<(), fidl::Error> {
15444        self.control_handle.inner.send::<fidl::encoding::ResultType<
15445            fidl::encoding::EmptyStruct,
15446            fidl_fuchsia_posix::Errno,
15447        >>(
15448            result,
15449            self.tx_id,
15450            0x58f07c8788d099a0,
15451            fidl::encoding::DynamicFlags::empty(),
15452        )
15453    }
15454}
15455
15456#[must_use = "FIDL methods require a response to be sent"]
15457#[derive(Debug)]
15458pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15459    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15460    tx_id: u32,
15461}
15462
15463/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15464/// if the responder is dropped without sending a response, so that the client
15465/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15466impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15467    fn drop(&mut self) {
15468        self.control_handle.shutdown();
15469        // Safety: drops once, never accessed again
15470        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15471    }
15472}
15473
15474impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15475    type ControlHandle = SocketControlHandle;
15476
15477    fn control_handle(&self) -> &SocketControlHandle {
15478        &self.control_handle
15479    }
15480
15481    fn drop_without_shutdown(mut self) {
15482        // Safety: drops once, never accessed again due to mem::forget
15483        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15484        // Prevent Drop from running (which would shut down the channel)
15485        std::mem::forget(self);
15486    }
15487}
15488
15489impl SocketGetIpv6ReceiveTrafficClassResponder {
15490    /// Sends a response to the FIDL transaction.
15491    ///
15492    /// Sets the channel to shutdown if an error occurs.
15493    pub fn send(
15494        self,
15495        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15496    ) -> Result<(), fidl::Error> {
15497        let _result = self.send_raw(result);
15498        if _result.is_err() {
15499            self.control_handle.shutdown();
15500        }
15501        self.drop_without_shutdown();
15502        _result
15503    }
15504
15505    /// Similar to "send" but does not shutdown the channel if an error occurs.
15506    pub fn send_no_shutdown_on_err(
15507        self,
15508        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15509    ) -> Result<(), fidl::Error> {
15510        let _result = self.send_raw(result);
15511        self.drop_without_shutdown();
15512        _result
15513    }
15514
15515    fn send_raw(
15516        &self,
15517        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15518    ) -> Result<(), fidl::Error> {
15519        self.control_handle.inner.send::<fidl::encoding::ResultType<
15520            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15521            fidl_fuchsia_posix::Errno,
15522        >>(
15523            result.map(|value| (value,)),
15524            self.tx_id,
15525            0x2e334df1da553ffa,
15526            fidl::encoding::DynamicFlags::empty(),
15527        )
15528    }
15529}
15530
15531#[must_use = "FIDL methods require a response to be sent"]
15532#[derive(Debug)]
15533pub struct SocketSetIpv6TrafficClassResponder {
15534    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15535    tx_id: u32,
15536}
15537
15538/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15539/// if the responder is dropped without sending a response, so that the client
15540/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15541impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15542    fn drop(&mut self) {
15543        self.control_handle.shutdown();
15544        // Safety: drops once, never accessed again
15545        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15546    }
15547}
15548
15549impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15550    type ControlHandle = SocketControlHandle;
15551
15552    fn control_handle(&self) -> &SocketControlHandle {
15553        &self.control_handle
15554    }
15555
15556    fn drop_without_shutdown(mut self) {
15557        // Safety: drops once, never accessed again due to mem::forget
15558        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15559        // Prevent Drop from running (which would shut down the channel)
15560        std::mem::forget(self);
15561    }
15562}
15563
15564impl SocketSetIpv6TrafficClassResponder {
15565    /// Sends a response to the FIDL transaction.
15566    ///
15567    /// Sets the channel to shutdown if an error occurs.
15568    pub fn send(
15569        self,
15570        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15571    ) -> Result<(), fidl::Error> {
15572        let _result = self.send_raw(result);
15573        if _result.is_err() {
15574            self.control_handle.shutdown();
15575        }
15576        self.drop_without_shutdown();
15577        _result
15578    }
15579
15580    /// Similar to "send" but does not shutdown the channel if an error occurs.
15581    pub fn send_no_shutdown_on_err(
15582        self,
15583        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15584    ) -> Result<(), fidl::Error> {
15585        let _result = self.send_raw(result);
15586        self.drop_without_shutdown();
15587        _result
15588    }
15589
15590    fn send_raw(
15591        &self,
15592        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15593    ) -> Result<(), fidl::Error> {
15594        self.control_handle.inner.send::<fidl::encoding::ResultType<
15595            fidl::encoding::EmptyStruct,
15596            fidl_fuchsia_posix::Errno,
15597        >>(
15598            result,
15599            self.tx_id,
15600            0x6af077800c5a0b4f,
15601            fidl::encoding::DynamicFlags::empty(),
15602        )
15603    }
15604}
15605
15606#[must_use = "FIDL methods require a response to be sent"]
15607#[derive(Debug)]
15608pub struct SocketGetIpv6TrafficClassResponder {
15609    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15610    tx_id: u32,
15611}
15612
15613/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15614/// if the responder is dropped without sending a response, so that the client
15615/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15616impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15617    fn drop(&mut self) {
15618        self.control_handle.shutdown();
15619        // Safety: drops once, never accessed again
15620        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15621    }
15622}
15623
15624impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15625    type ControlHandle = SocketControlHandle;
15626
15627    fn control_handle(&self) -> &SocketControlHandle {
15628        &self.control_handle
15629    }
15630
15631    fn drop_without_shutdown(mut self) {
15632        // Safety: drops once, never accessed again due to mem::forget
15633        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15634        // Prevent Drop from running (which would shut down the channel)
15635        std::mem::forget(self);
15636    }
15637}
15638
15639impl SocketGetIpv6TrafficClassResponder {
15640    /// Sends a response to the FIDL transaction.
15641    ///
15642    /// Sets the channel to shutdown if an error occurs.
15643    pub fn send(
15644        self,
15645        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15646    ) -> Result<(), fidl::Error> {
15647        let _result = self.send_raw(result);
15648        if _result.is_err() {
15649            self.control_handle.shutdown();
15650        }
15651        self.drop_without_shutdown();
15652        _result
15653    }
15654
15655    /// Similar to "send" but does not shutdown the channel if an error occurs.
15656    pub fn send_no_shutdown_on_err(
15657        self,
15658        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15659    ) -> Result<(), fidl::Error> {
15660        let _result = self.send_raw(result);
15661        self.drop_without_shutdown();
15662        _result
15663    }
15664
15665    fn send_raw(
15666        &self,
15667        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15668    ) -> Result<(), fidl::Error> {
15669        self.control_handle.inner.send::<fidl::encoding::ResultType<
15670            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15671            fidl_fuchsia_posix::Errno,
15672        >>(
15673            result.map(|value| (value,)),
15674            self.tx_id,
15675            0x6baf6eed8fc2f04,
15676            fidl::encoding::DynamicFlags::empty(),
15677        )
15678    }
15679}
15680
15681#[must_use = "FIDL methods require a response to be sent"]
15682#[derive(Debug)]
15683pub struct SocketSetIpv6ReceivePacketInfoResponder {
15684    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15685    tx_id: u32,
15686}
15687
15688/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15689/// if the responder is dropped without sending a response, so that the client
15690/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15691impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15692    fn drop(&mut self) {
15693        self.control_handle.shutdown();
15694        // Safety: drops once, never accessed again
15695        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15696    }
15697}
15698
15699impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15700    type ControlHandle = SocketControlHandle;
15701
15702    fn control_handle(&self) -> &SocketControlHandle {
15703        &self.control_handle
15704    }
15705
15706    fn drop_without_shutdown(mut self) {
15707        // Safety: drops once, never accessed again due to mem::forget
15708        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15709        // Prevent Drop from running (which would shut down the channel)
15710        std::mem::forget(self);
15711    }
15712}
15713
15714impl SocketSetIpv6ReceivePacketInfoResponder {
15715    /// Sends a response to the FIDL transaction.
15716    ///
15717    /// Sets the channel to shutdown if an error occurs.
15718    pub fn send(
15719        self,
15720        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15721    ) -> Result<(), fidl::Error> {
15722        let _result = self.send_raw(result);
15723        if _result.is_err() {
15724            self.control_handle.shutdown();
15725        }
15726        self.drop_without_shutdown();
15727        _result
15728    }
15729
15730    /// Similar to "send" but does not shutdown the channel if an error occurs.
15731    pub fn send_no_shutdown_on_err(
15732        self,
15733        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15734    ) -> Result<(), fidl::Error> {
15735        let _result = self.send_raw(result);
15736        self.drop_without_shutdown();
15737        _result
15738    }
15739
15740    fn send_raw(
15741        &self,
15742        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15743    ) -> Result<(), fidl::Error> {
15744        self.control_handle.inner.send::<fidl::encoding::ResultType<
15745            fidl::encoding::EmptyStruct,
15746            fidl_fuchsia_posix::Errno,
15747        >>(
15748            result,
15749            self.tx_id,
15750            0x19259775b1a92768,
15751            fidl::encoding::DynamicFlags::empty(),
15752        )
15753    }
15754}
15755
15756#[must_use = "FIDL methods require a response to be sent"]
15757#[derive(Debug)]
15758pub struct SocketGetIpv6ReceivePacketInfoResponder {
15759    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15760    tx_id: u32,
15761}
15762
15763/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15764/// if the responder is dropped without sending a response, so that the client
15765/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15766impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15767    fn drop(&mut self) {
15768        self.control_handle.shutdown();
15769        // Safety: drops once, never accessed again
15770        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15771    }
15772}
15773
15774impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15775    type ControlHandle = SocketControlHandle;
15776
15777    fn control_handle(&self) -> &SocketControlHandle {
15778        &self.control_handle
15779    }
15780
15781    fn drop_without_shutdown(mut self) {
15782        // Safety: drops once, never accessed again due to mem::forget
15783        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15784        // Prevent Drop from running (which would shut down the channel)
15785        std::mem::forget(self);
15786    }
15787}
15788
15789impl SocketGetIpv6ReceivePacketInfoResponder {
15790    /// Sends a response to the FIDL transaction.
15791    ///
15792    /// Sets the channel to shutdown if an error occurs.
15793    pub fn send(
15794        self,
15795        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15796    ) -> Result<(), fidl::Error> {
15797        let _result = self.send_raw(result);
15798        if _result.is_err() {
15799            self.control_handle.shutdown();
15800        }
15801        self.drop_without_shutdown();
15802        _result
15803    }
15804
15805    /// Similar to "send" but does not shutdown the channel if an error occurs.
15806    pub fn send_no_shutdown_on_err(
15807        self,
15808        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15809    ) -> Result<(), fidl::Error> {
15810        let _result = self.send_raw(result);
15811        self.drop_without_shutdown();
15812        _result
15813    }
15814
15815    fn send_raw(
15816        &self,
15817        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15818    ) -> Result<(), fidl::Error> {
15819        self.control_handle.inner.send::<fidl::encoding::ResultType<
15820            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15821            fidl_fuchsia_posix::Errno,
15822        >>(
15823            result.map(|value| (value,)),
15824            self.tx_id,
15825            0x7acd4a2775baec75,
15826            fidl::encoding::DynamicFlags::empty(),
15827        )
15828    }
15829}
15830
15831#[must_use = "FIDL methods require a response to be sent"]
15832#[derive(Debug)]
15833pub struct SocketGetOriginalDestinationResponder {
15834    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15835    tx_id: u32,
15836}
15837
15838/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15839/// if the responder is dropped without sending a response, so that the client
15840/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15841impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15842    fn drop(&mut self) {
15843        self.control_handle.shutdown();
15844        // Safety: drops once, never accessed again
15845        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15846    }
15847}
15848
15849impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15850    type ControlHandle = SocketControlHandle;
15851
15852    fn control_handle(&self) -> &SocketControlHandle {
15853        &self.control_handle
15854    }
15855
15856    fn drop_without_shutdown(mut self) {
15857        // Safety: drops once, never accessed again due to mem::forget
15858        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15859        // Prevent Drop from running (which would shut down the channel)
15860        std::mem::forget(self);
15861    }
15862}
15863
15864impl SocketGetOriginalDestinationResponder {
15865    /// Sends a response to the FIDL transaction.
15866    ///
15867    /// Sets the channel to shutdown if an error occurs.
15868    pub fn send(
15869        self,
15870        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15871    ) -> Result<(), fidl::Error> {
15872        let _result = self.send_raw(result);
15873        if _result.is_err() {
15874            self.control_handle.shutdown();
15875        }
15876        self.drop_without_shutdown();
15877        _result
15878    }
15879
15880    /// Similar to "send" but does not shutdown the channel if an error occurs.
15881    pub fn send_no_shutdown_on_err(
15882        self,
15883        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15884    ) -> Result<(), fidl::Error> {
15885        let _result = self.send_raw(result);
15886        self.drop_without_shutdown();
15887        _result
15888    }
15889
15890    fn send_raw(
15891        &self,
15892        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15893    ) -> Result<(), fidl::Error> {
15894        self.control_handle.inner.send::<fidl::encoding::ResultType<
15895            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
15896            fidl_fuchsia_posix::Errno,
15897        >>(
15898            result.map(|value| (value,)),
15899            self.tx_id,
15900            0x38bf28f0dafdbac0,
15901            fidl::encoding::DynamicFlags::empty(),
15902        )
15903    }
15904}
15905
15906#[must_use = "FIDL methods require a response to be sent"]
15907#[derive(Debug)]
15908pub struct SocketDescribeResponder {
15909    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15910    tx_id: u32,
15911}
15912
15913/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15914/// if the responder is dropped without sending a response, so that the client
15915/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15916impl std::ops::Drop for SocketDescribeResponder {
15917    fn drop(&mut self) {
15918        self.control_handle.shutdown();
15919        // Safety: drops once, never accessed again
15920        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15921    }
15922}
15923
15924impl fidl::endpoints::Responder for SocketDescribeResponder {
15925    type ControlHandle = SocketControlHandle;
15926
15927    fn control_handle(&self) -> &SocketControlHandle {
15928        &self.control_handle
15929    }
15930
15931    fn drop_without_shutdown(mut self) {
15932        // Safety: drops once, never accessed again due to mem::forget
15933        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15934        // Prevent Drop from running (which would shut down the channel)
15935        std::mem::forget(self);
15936    }
15937}
15938
15939impl SocketDescribeResponder {
15940    /// Sends a response to the FIDL transaction.
15941    ///
15942    /// Sets the channel to shutdown if an error occurs.
15943    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15944        let _result = self.send_raw(payload);
15945        if _result.is_err() {
15946            self.control_handle.shutdown();
15947        }
15948        self.drop_without_shutdown();
15949        _result
15950    }
15951
15952    /// Similar to "send" but does not shutdown the channel if an error occurs.
15953    pub fn send_no_shutdown_on_err(
15954        self,
15955        mut payload: SocketDescribeResponse,
15956    ) -> Result<(), fidl::Error> {
15957        let _result = self.send_raw(payload);
15958        self.drop_without_shutdown();
15959        _result
15960    }
15961
15962    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15963        self.control_handle.inner.send::<SocketDescribeResponse>(
15964            &mut payload,
15965            self.tx_id,
15966            0x335706eccf54a135,
15967            fidl::encoding::DynamicFlags::empty(),
15968        )
15969    }
15970}
15971
15972#[must_use = "FIDL methods require a response to be sent"]
15973#[derive(Debug)]
15974pub struct SocketRecvMsgResponder {
15975    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15976    tx_id: u32,
15977}
15978
15979/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15980/// if the responder is dropped without sending a response, so that the client
15981/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15982impl std::ops::Drop for SocketRecvMsgResponder {
15983    fn drop(&mut self) {
15984        self.control_handle.shutdown();
15985        // Safety: drops once, never accessed again
15986        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15987    }
15988}
15989
15990impl fidl::endpoints::Responder for SocketRecvMsgResponder {
15991    type ControlHandle = SocketControlHandle;
15992
15993    fn control_handle(&self) -> &SocketControlHandle {
15994        &self.control_handle
15995    }
15996
15997    fn drop_without_shutdown(mut self) {
15998        // Safety: drops once, never accessed again due to mem::forget
15999        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16000        // Prevent Drop from running (which would shut down the channel)
16001        std::mem::forget(self);
16002    }
16003}
16004
16005impl SocketRecvMsgResponder {
16006    /// Sends a response to the FIDL transaction.
16007    ///
16008    /// Sets the channel to shutdown if an error occurs.
16009    pub fn send(
16010        self,
16011        mut result: Result<
16012            (
16013                Option<&fidl_fuchsia_net::SocketAddress>,
16014                &[u8],
16015                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16016                u32,
16017            ),
16018            fidl_fuchsia_posix::Errno,
16019        >,
16020    ) -> Result<(), fidl::Error> {
16021        let _result = self.send_raw(result);
16022        if _result.is_err() {
16023            self.control_handle.shutdown();
16024        }
16025        self.drop_without_shutdown();
16026        _result
16027    }
16028
16029    /// Similar to "send" but does not shutdown the channel if an error occurs.
16030    pub fn send_no_shutdown_on_err(
16031        self,
16032        mut result: Result<
16033            (
16034                Option<&fidl_fuchsia_net::SocketAddress>,
16035                &[u8],
16036                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16037                u32,
16038            ),
16039            fidl_fuchsia_posix::Errno,
16040        >,
16041    ) -> Result<(), fidl::Error> {
16042        let _result = self.send_raw(result);
16043        self.drop_without_shutdown();
16044        _result
16045    }
16046
16047    fn send_raw(
16048        &self,
16049        mut result: Result<
16050            (
16051                Option<&fidl_fuchsia_net::SocketAddress>,
16052                &[u8],
16053                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16054                u32,
16055            ),
16056            fidl_fuchsia_posix::Errno,
16057        >,
16058    ) -> Result<(), fidl::Error> {
16059        self.control_handle.inner.send::<fidl::encoding::ResultType<
16060            SocketRecvMsgResponse,
16061            fidl_fuchsia_posix::Errno,
16062        >>(
16063            result,
16064            self.tx_id,
16065            0x1dfb695351d3aa1d,
16066            fidl::encoding::DynamicFlags::empty(),
16067        )
16068    }
16069}
16070
16071#[must_use = "FIDL methods require a response to be sent"]
16072#[derive(Debug)]
16073pub struct SocketSendMsgResponder {
16074    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16075    tx_id: u32,
16076}
16077
16078/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16079/// if the responder is dropped without sending a response, so that the client
16080/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16081impl std::ops::Drop for SocketSendMsgResponder {
16082    fn drop(&mut self) {
16083        self.control_handle.shutdown();
16084        // Safety: drops once, never accessed again
16085        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16086    }
16087}
16088
16089impl fidl::endpoints::Responder for SocketSendMsgResponder {
16090    type ControlHandle = SocketControlHandle;
16091
16092    fn control_handle(&self) -> &SocketControlHandle {
16093        &self.control_handle
16094    }
16095
16096    fn drop_without_shutdown(mut self) {
16097        // Safety: drops once, never accessed again due to mem::forget
16098        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16099        // Prevent Drop from running (which would shut down the channel)
16100        std::mem::forget(self);
16101    }
16102}
16103
16104impl SocketSendMsgResponder {
16105    /// Sends a response to the FIDL transaction.
16106    ///
16107    /// Sets the channel to shutdown if an error occurs.
16108    pub fn send(
16109        self,
16110        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16111    ) -> Result<(), fidl::Error> {
16112        let _result = self.send_raw(result);
16113        if _result.is_err() {
16114            self.control_handle.shutdown();
16115        }
16116        self.drop_without_shutdown();
16117        _result
16118    }
16119
16120    /// Similar to "send" but does not shutdown the channel if an error occurs.
16121    pub fn send_no_shutdown_on_err(
16122        self,
16123        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16124    ) -> Result<(), fidl::Error> {
16125        let _result = self.send_raw(result);
16126        self.drop_without_shutdown();
16127        _result
16128    }
16129
16130    fn send_raw(
16131        &self,
16132        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16133    ) -> Result<(), fidl::Error> {
16134        self.control_handle.inner.send::<fidl::encoding::ResultType<
16135            fidl::encoding::EmptyStruct,
16136            fidl_fuchsia_posix::Errno,
16137        >>(
16138            result,
16139            self.tx_id,
16140            0x2cf1eac9a7fc8958,
16141            fidl::encoding::DynamicFlags::empty(),
16142        )
16143    }
16144}
16145
16146#[must_use = "FIDL methods require a response to be sent"]
16147#[derive(Debug)]
16148pub struct SocketGetInfoResponder {
16149    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16150    tx_id: u32,
16151}
16152
16153/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16154/// if the responder is dropped without sending a response, so that the client
16155/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16156impl std::ops::Drop for SocketGetInfoResponder {
16157    fn drop(&mut self) {
16158        self.control_handle.shutdown();
16159        // Safety: drops once, never accessed again
16160        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16161    }
16162}
16163
16164impl fidl::endpoints::Responder for SocketGetInfoResponder {
16165    type ControlHandle = SocketControlHandle;
16166
16167    fn control_handle(&self) -> &SocketControlHandle {
16168        &self.control_handle
16169    }
16170
16171    fn drop_without_shutdown(mut self) {
16172        // Safety: drops once, never accessed again due to mem::forget
16173        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16174        // Prevent Drop from running (which would shut down the channel)
16175        std::mem::forget(self);
16176    }
16177}
16178
16179impl SocketGetInfoResponder {
16180    /// Sends a response to the FIDL transaction.
16181    ///
16182    /// Sets the channel to shutdown if an error occurs.
16183    pub fn send(
16184        self,
16185        mut result: Result<
16186            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16187            fidl_fuchsia_posix::Errno,
16188        >,
16189    ) -> Result<(), fidl::Error> {
16190        let _result = self.send_raw(result);
16191        if _result.is_err() {
16192            self.control_handle.shutdown();
16193        }
16194        self.drop_without_shutdown();
16195        _result
16196    }
16197
16198    /// Similar to "send" but does not shutdown the channel if an error occurs.
16199    pub fn send_no_shutdown_on_err(
16200        self,
16201        mut result: Result<
16202            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16203            fidl_fuchsia_posix::Errno,
16204        >,
16205    ) -> Result<(), fidl::Error> {
16206        let _result = self.send_raw(result);
16207        self.drop_without_shutdown();
16208        _result
16209    }
16210
16211    fn send_raw(
16212        &self,
16213        mut result: Result<
16214            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16215            fidl_fuchsia_posix::Errno,
16216        >,
16217    ) -> Result<(), fidl::Error> {
16218        self.control_handle.inner.send::<fidl::encoding::ResultType<
16219            SocketGetInfoResponse,
16220            fidl_fuchsia_posix::Errno,
16221        >>(
16222            result,
16223            self.tx_id,
16224            0x39676f75aec339ba,
16225            fidl::encoding::DynamicFlags::empty(),
16226        )
16227    }
16228}
16229
16230#[must_use = "FIDL methods require a response to be sent"]
16231#[derive(Debug)]
16232pub struct SocketSetIpHeaderIncludedResponder {
16233    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16234    tx_id: u32,
16235}
16236
16237/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16238/// if the responder is dropped without sending a response, so that the client
16239/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16240impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16241    fn drop(&mut self) {
16242        self.control_handle.shutdown();
16243        // Safety: drops once, never accessed again
16244        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16245    }
16246}
16247
16248impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16249    type ControlHandle = SocketControlHandle;
16250
16251    fn control_handle(&self) -> &SocketControlHandle {
16252        &self.control_handle
16253    }
16254
16255    fn drop_without_shutdown(mut self) {
16256        // Safety: drops once, never accessed again due to mem::forget
16257        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16258        // Prevent Drop from running (which would shut down the channel)
16259        std::mem::forget(self);
16260    }
16261}
16262
16263impl SocketSetIpHeaderIncludedResponder {
16264    /// Sends a response to the FIDL transaction.
16265    ///
16266    /// Sets the channel to shutdown if an error occurs.
16267    pub fn send(
16268        self,
16269        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16270    ) -> Result<(), fidl::Error> {
16271        let _result = self.send_raw(result);
16272        if _result.is_err() {
16273            self.control_handle.shutdown();
16274        }
16275        self.drop_without_shutdown();
16276        _result
16277    }
16278
16279    /// Similar to "send" but does not shutdown the channel if an error occurs.
16280    pub fn send_no_shutdown_on_err(
16281        self,
16282        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16283    ) -> Result<(), fidl::Error> {
16284        let _result = self.send_raw(result);
16285        self.drop_without_shutdown();
16286        _result
16287    }
16288
16289    fn send_raw(
16290        &self,
16291        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16292    ) -> Result<(), fidl::Error> {
16293        self.control_handle.inner.send::<fidl::encoding::ResultType<
16294            fidl::encoding::EmptyStruct,
16295            fidl_fuchsia_posix::Errno,
16296        >>(
16297            result,
16298            self.tx_id,
16299            0x5d06a606d95e8f3,
16300            fidl::encoding::DynamicFlags::empty(),
16301        )
16302    }
16303}
16304
16305#[must_use = "FIDL methods require a response to be sent"]
16306#[derive(Debug)]
16307pub struct SocketGetIpHeaderIncludedResponder {
16308    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16309    tx_id: u32,
16310}
16311
16312/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16313/// if the responder is dropped without sending a response, so that the client
16314/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16315impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16316    fn drop(&mut self) {
16317        self.control_handle.shutdown();
16318        // Safety: drops once, never accessed again
16319        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16320    }
16321}
16322
16323impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16324    type ControlHandle = SocketControlHandle;
16325
16326    fn control_handle(&self) -> &SocketControlHandle {
16327        &self.control_handle
16328    }
16329
16330    fn drop_without_shutdown(mut self) {
16331        // Safety: drops once, never accessed again due to mem::forget
16332        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16333        // Prevent Drop from running (which would shut down the channel)
16334        std::mem::forget(self);
16335    }
16336}
16337
16338impl SocketGetIpHeaderIncludedResponder {
16339    /// Sends a response to the FIDL transaction.
16340    ///
16341    /// Sets the channel to shutdown if an error occurs.
16342    pub fn send(
16343        self,
16344        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16345    ) -> Result<(), fidl::Error> {
16346        let _result = self.send_raw(result);
16347        if _result.is_err() {
16348            self.control_handle.shutdown();
16349        }
16350        self.drop_without_shutdown();
16351        _result
16352    }
16353
16354    /// Similar to "send" but does not shutdown the channel if an error occurs.
16355    pub fn send_no_shutdown_on_err(
16356        self,
16357        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16358    ) -> Result<(), fidl::Error> {
16359        let _result = self.send_raw(result);
16360        self.drop_without_shutdown();
16361        _result
16362    }
16363
16364    fn send_raw(
16365        &self,
16366        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16367    ) -> Result<(), fidl::Error> {
16368        self.control_handle.inner.send::<fidl::encoding::ResultType<
16369            SocketGetIpHeaderIncludedResponse,
16370            fidl_fuchsia_posix::Errno,
16371        >>(
16372            result.map(|value| (value,)),
16373            self.tx_id,
16374            0x76125ad1f4d175f6,
16375            fidl::encoding::DynamicFlags::empty(),
16376        )
16377    }
16378}
16379
16380#[must_use = "FIDL methods require a response to be sent"]
16381#[derive(Debug)]
16382pub struct SocketSetIcmpv6FilterResponder {
16383    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16384    tx_id: u32,
16385}
16386
16387/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16388/// if the responder is dropped without sending a response, so that the client
16389/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16390impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16391    fn drop(&mut self) {
16392        self.control_handle.shutdown();
16393        // Safety: drops once, never accessed again
16394        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16395    }
16396}
16397
16398impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16399    type ControlHandle = SocketControlHandle;
16400
16401    fn control_handle(&self) -> &SocketControlHandle {
16402        &self.control_handle
16403    }
16404
16405    fn drop_without_shutdown(mut self) {
16406        // Safety: drops once, never accessed again due to mem::forget
16407        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16408        // Prevent Drop from running (which would shut down the channel)
16409        std::mem::forget(self);
16410    }
16411}
16412
16413impl SocketSetIcmpv6FilterResponder {
16414    /// Sends a response to the FIDL transaction.
16415    ///
16416    /// Sets the channel to shutdown if an error occurs.
16417    pub fn send(
16418        self,
16419        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16420    ) -> Result<(), fidl::Error> {
16421        let _result = self.send_raw(result);
16422        if _result.is_err() {
16423            self.control_handle.shutdown();
16424        }
16425        self.drop_without_shutdown();
16426        _result
16427    }
16428
16429    /// Similar to "send" but does not shutdown the channel if an error occurs.
16430    pub fn send_no_shutdown_on_err(
16431        self,
16432        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16433    ) -> Result<(), fidl::Error> {
16434        let _result = self.send_raw(result);
16435        self.drop_without_shutdown();
16436        _result
16437    }
16438
16439    fn send_raw(
16440        &self,
16441        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16442    ) -> Result<(), fidl::Error> {
16443        self.control_handle.inner.send::<fidl::encoding::ResultType<
16444            fidl::encoding::EmptyStruct,
16445            fidl_fuchsia_posix::Errno,
16446        >>(
16447            result,
16448            self.tx_id,
16449            0x4ebea92a43ae68a9,
16450            fidl::encoding::DynamicFlags::empty(),
16451        )
16452    }
16453}
16454
16455#[must_use = "FIDL methods require a response to be sent"]
16456#[derive(Debug)]
16457pub struct SocketGetIcmpv6FilterResponder {
16458    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16459    tx_id: u32,
16460}
16461
16462/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16463/// if the responder is dropped without sending a response, so that the client
16464/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16465impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16466    fn drop(&mut self) {
16467        self.control_handle.shutdown();
16468        // Safety: drops once, never accessed again
16469        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16470    }
16471}
16472
16473impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16474    type ControlHandle = SocketControlHandle;
16475
16476    fn control_handle(&self) -> &SocketControlHandle {
16477        &self.control_handle
16478    }
16479
16480    fn drop_without_shutdown(mut self) {
16481        // Safety: drops once, never accessed again due to mem::forget
16482        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16483        // Prevent Drop from running (which would shut down the channel)
16484        std::mem::forget(self);
16485    }
16486}
16487
16488impl SocketGetIcmpv6FilterResponder {
16489    /// Sends a response to the FIDL transaction.
16490    ///
16491    /// Sets the channel to shutdown if an error occurs.
16492    pub fn send(
16493        self,
16494        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16495    ) -> Result<(), fidl::Error> {
16496        let _result = self.send_raw(result);
16497        if _result.is_err() {
16498            self.control_handle.shutdown();
16499        }
16500        self.drop_without_shutdown();
16501        _result
16502    }
16503
16504    /// Similar to "send" but does not shutdown the channel if an error occurs.
16505    pub fn send_no_shutdown_on_err(
16506        self,
16507        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16508    ) -> Result<(), fidl::Error> {
16509        let _result = self.send_raw(result);
16510        self.drop_without_shutdown();
16511        _result
16512    }
16513
16514    fn send_raw(
16515        &self,
16516        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16517    ) -> Result<(), fidl::Error> {
16518        self.control_handle.inner.send::<fidl::encoding::ResultType<
16519            SocketGetIcmpv6FilterResponse,
16520            fidl_fuchsia_posix::Errno,
16521        >>(
16522            result.map(|filter| (filter,)),
16523            self.tx_id,
16524            0x43bd4f3bc0970ace,
16525            fidl::encoding::DynamicFlags::empty(),
16526        )
16527    }
16528}
16529
16530#[must_use = "FIDL methods require a response to be sent"]
16531#[derive(Debug)]
16532pub struct SocketSetIpv6ChecksumResponder {
16533    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16534    tx_id: u32,
16535}
16536
16537/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16538/// if the responder is dropped without sending a response, so that the client
16539/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16540impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16541    fn drop(&mut self) {
16542        self.control_handle.shutdown();
16543        // Safety: drops once, never accessed again
16544        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16545    }
16546}
16547
16548impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16549    type ControlHandle = SocketControlHandle;
16550
16551    fn control_handle(&self) -> &SocketControlHandle {
16552        &self.control_handle
16553    }
16554
16555    fn drop_without_shutdown(mut self) {
16556        // Safety: drops once, never accessed again due to mem::forget
16557        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16558        // Prevent Drop from running (which would shut down the channel)
16559        std::mem::forget(self);
16560    }
16561}
16562
16563impl SocketSetIpv6ChecksumResponder {
16564    /// Sends a response to the FIDL transaction.
16565    ///
16566    /// Sets the channel to shutdown if an error occurs.
16567    pub fn send(
16568        self,
16569        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16570    ) -> Result<(), fidl::Error> {
16571        let _result = self.send_raw(result);
16572        if _result.is_err() {
16573            self.control_handle.shutdown();
16574        }
16575        self.drop_without_shutdown();
16576        _result
16577    }
16578
16579    /// Similar to "send" but does not shutdown the channel if an error occurs.
16580    pub fn send_no_shutdown_on_err(
16581        self,
16582        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16583    ) -> Result<(), fidl::Error> {
16584        let _result = self.send_raw(result);
16585        self.drop_without_shutdown();
16586        _result
16587    }
16588
16589    fn send_raw(
16590        &self,
16591        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16592    ) -> Result<(), fidl::Error> {
16593        self.control_handle.inner.send::<fidl::encoding::ResultType<
16594            fidl::encoding::EmptyStruct,
16595            fidl_fuchsia_posix::Errno,
16596        >>(
16597            result,
16598            self.tx_id,
16599            0x18b7809577199cb4,
16600            fidl::encoding::DynamicFlags::empty(),
16601        )
16602    }
16603}
16604
16605#[must_use = "FIDL methods require a response to be sent"]
16606#[derive(Debug)]
16607pub struct SocketGetIpv6ChecksumResponder {
16608    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16609    tx_id: u32,
16610}
16611
16612/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16613/// if the responder is dropped without sending a response, so that the client
16614/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16615impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16616    fn drop(&mut self) {
16617        self.control_handle.shutdown();
16618        // Safety: drops once, never accessed again
16619        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16620    }
16621}
16622
16623impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16624    type ControlHandle = SocketControlHandle;
16625
16626    fn control_handle(&self) -> &SocketControlHandle {
16627        &self.control_handle
16628    }
16629
16630    fn drop_without_shutdown(mut self) {
16631        // Safety: drops once, never accessed again due to mem::forget
16632        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16633        // Prevent Drop from running (which would shut down the channel)
16634        std::mem::forget(self);
16635    }
16636}
16637
16638impl SocketGetIpv6ChecksumResponder {
16639    /// Sends a response to the FIDL transaction.
16640    ///
16641    /// Sets the channel to shutdown if an error occurs.
16642    pub fn send(
16643        self,
16644        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16645    ) -> Result<(), fidl::Error> {
16646        let _result = self.send_raw(result);
16647        if _result.is_err() {
16648            self.control_handle.shutdown();
16649        }
16650        self.drop_without_shutdown();
16651        _result
16652    }
16653
16654    /// Similar to "send" but does not shutdown the channel if an error occurs.
16655    pub fn send_no_shutdown_on_err(
16656        self,
16657        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16658    ) -> Result<(), fidl::Error> {
16659        let _result = self.send_raw(result);
16660        self.drop_without_shutdown();
16661        _result
16662    }
16663
16664    fn send_raw(
16665        &self,
16666        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16667    ) -> Result<(), fidl::Error> {
16668        self.control_handle.inner.send::<fidl::encoding::ResultType<
16669            SocketGetIpv6ChecksumResponse,
16670            fidl_fuchsia_posix::Errno,
16671        >>(
16672            result.map(|config| (config,)),
16673            self.tx_id,
16674            0x1847bf5b2d263dd,
16675            fidl::encoding::DynamicFlags::empty(),
16676        )
16677    }
16678}
16679
16680mod internal {
16681    use super::*;
16682
16683    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsRequest {
16684        type Borrowed<'a> = &'a mut Self;
16685        fn take_or_borrow<'a>(
16686            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16687        ) -> Self::Borrowed<'a> {
16688            value
16689        }
16690    }
16691
16692    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16693        type Owned = Self;
16694
16695        #[inline(always)]
16696        fn inline_align(_context: fidl::encoding::Context) -> usize {
16697            8
16698        }
16699
16700        #[inline(always)]
16701        fn inline_size(_context: fidl::encoding::Context) -> usize {
16702            40
16703        }
16704    }
16705
16706    unsafe impl
16707        fidl::encoding::Encode<
16708            ProviderSocketWithOptionsRequest,
16709            fidl::encoding::DefaultFuchsiaResourceDialect,
16710        > for &mut ProviderSocketWithOptionsRequest
16711    {
16712        #[inline]
16713        unsafe fn encode(
16714            self,
16715            encoder: &mut fidl::encoding::Encoder<
16716                '_,
16717                fidl::encoding::DefaultFuchsiaResourceDialect,
16718            >,
16719            offset: usize,
16720            _depth: fidl::encoding::Depth,
16721        ) -> fidl::Result<()> {
16722            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16723            // Delegate to tuple encoding.
16724            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16725                (
16726                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16727                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16728                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.opts),
16729                ),
16730                encoder, offset, _depth
16731            )
16732        }
16733    }
16734    unsafe impl<
16735        T0: fidl::encoding::Encode<
16736                fidl_fuchsia_posix_socket::Domain,
16737                fidl::encoding::DefaultFuchsiaResourceDialect,
16738            >,
16739        T1: fidl::encoding::Encode<ProtocolAssociation, fidl::encoding::DefaultFuchsiaResourceDialect>,
16740        T2: fidl::encoding::Encode<
16741                fidl_fuchsia_posix_socket::SocketCreationOptions,
16742                fidl::encoding::DefaultFuchsiaResourceDialect,
16743            >,
16744    >
16745        fidl::encoding::Encode<
16746            ProviderSocketWithOptionsRequest,
16747            fidl::encoding::DefaultFuchsiaResourceDialect,
16748        > for (T0, T1, T2)
16749    {
16750        #[inline]
16751        unsafe fn encode(
16752            self,
16753            encoder: &mut fidl::encoding::Encoder<
16754                '_,
16755                fidl::encoding::DefaultFuchsiaResourceDialect,
16756            >,
16757            offset: usize,
16758            depth: fidl::encoding::Depth,
16759        ) -> fidl::Result<()> {
16760            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16761            // Zero out padding regions. There's no need to apply masks
16762            // because the unmasked parts will be overwritten by fields.
16763            unsafe {
16764                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16765                (ptr as *mut u64).write_unaligned(0);
16766            }
16767            // Write the fields.
16768            self.0.encode(encoder, offset + 0, depth)?;
16769            self.1.encode(encoder, offset + 8, depth)?;
16770            self.2.encode(encoder, offset + 24, depth)?;
16771            Ok(())
16772        }
16773    }
16774
16775    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16776        for ProviderSocketWithOptionsRequest
16777    {
16778        #[inline(always)]
16779        fn new_empty() -> Self {
16780            Self {
16781                domain: fidl::new_empty!(
16782                    fidl_fuchsia_posix_socket::Domain,
16783                    fidl::encoding::DefaultFuchsiaResourceDialect
16784                ),
16785                proto: fidl::new_empty!(
16786                    ProtocolAssociation,
16787                    fidl::encoding::DefaultFuchsiaResourceDialect
16788                ),
16789                opts: fidl::new_empty!(
16790                    fidl_fuchsia_posix_socket::SocketCreationOptions,
16791                    fidl::encoding::DefaultFuchsiaResourceDialect
16792                ),
16793            }
16794        }
16795
16796        #[inline]
16797        unsafe fn decode(
16798            &mut self,
16799            decoder: &mut fidl::encoding::Decoder<
16800                '_,
16801                fidl::encoding::DefaultFuchsiaResourceDialect,
16802            >,
16803            offset: usize,
16804            _depth: fidl::encoding::Depth,
16805        ) -> fidl::Result<()> {
16806            decoder.debug_check_bounds::<Self>(offset);
16807            // Verify that padding bytes are zero.
16808            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16809            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16810            let mask = 0xffffffffffff0000u64;
16811            let maskedval = padval & mask;
16812            if maskedval != 0 {
16813                return Err(fidl::Error::NonZeroPadding {
16814                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16815                });
16816            }
16817            fidl::decode!(
16818                fidl_fuchsia_posix_socket::Domain,
16819                fidl::encoding::DefaultFuchsiaResourceDialect,
16820                &mut self.domain,
16821                decoder,
16822                offset + 0,
16823                _depth
16824            )?;
16825            fidl::decode!(
16826                ProtocolAssociation,
16827                fidl::encoding::DefaultFuchsiaResourceDialect,
16828                &mut self.proto,
16829                decoder,
16830                offset + 8,
16831                _depth
16832            )?;
16833            fidl::decode!(
16834                fidl_fuchsia_posix_socket::SocketCreationOptions,
16835                fidl::encoding::DefaultFuchsiaResourceDialect,
16836                &mut self.opts,
16837                decoder,
16838                offset + 24,
16839                _depth
16840            )?;
16841            Ok(())
16842        }
16843    }
16844
16845    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16846        type Borrowed<'a> = &'a mut Self;
16847        fn take_or_borrow<'a>(
16848            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16849        ) -> Self::Borrowed<'a> {
16850            value
16851        }
16852    }
16853
16854    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16855        type Owned = Self;
16856
16857        #[inline(always)]
16858        fn inline_align(_context: fidl::encoding::Context) -> usize {
16859            4
16860        }
16861
16862        #[inline(always)]
16863        fn inline_size(_context: fidl::encoding::Context) -> usize {
16864            4
16865        }
16866    }
16867
16868    unsafe impl
16869        fidl::encoding::Encode<
16870            ProviderSocketWithOptionsResponse,
16871            fidl::encoding::DefaultFuchsiaResourceDialect,
16872        > for &mut ProviderSocketWithOptionsResponse
16873    {
16874        #[inline]
16875        unsafe fn encode(
16876            self,
16877            encoder: &mut fidl::encoding::Encoder<
16878                '_,
16879                fidl::encoding::DefaultFuchsiaResourceDialect,
16880            >,
16881            offset: usize,
16882            _depth: fidl::encoding::Depth,
16883        ) -> fidl::Result<()> {
16884            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16885            // Delegate to tuple encoding.
16886            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16887                (
16888                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
16889                ),
16890                encoder, offset, _depth
16891            )
16892        }
16893    }
16894    unsafe impl<
16895        T0: fidl::encoding::Encode<
16896                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16897                fidl::encoding::DefaultFuchsiaResourceDialect,
16898            >,
16899    >
16900        fidl::encoding::Encode<
16901            ProviderSocketWithOptionsResponse,
16902            fidl::encoding::DefaultFuchsiaResourceDialect,
16903        > for (T0,)
16904    {
16905        #[inline]
16906        unsafe fn encode(
16907            self,
16908            encoder: &mut fidl::encoding::Encoder<
16909                '_,
16910                fidl::encoding::DefaultFuchsiaResourceDialect,
16911            >,
16912            offset: usize,
16913            depth: fidl::encoding::Depth,
16914        ) -> fidl::Result<()> {
16915            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16916            // Zero out padding regions. There's no need to apply masks
16917            // because the unmasked parts will be overwritten by fields.
16918            // Write the fields.
16919            self.0.encode(encoder, offset + 0, depth)?;
16920            Ok(())
16921        }
16922    }
16923
16924    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16925        for ProviderSocketWithOptionsResponse
16926    {
16927        #[inline(always)]
16928        fn new_empty() -> Self {
16929            Self {
16930                s: fidl::new_empty!(
16931                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16932                    fidl::encoding::DefaultFuchsiaResourceDialect
16933                ),
16934            }
16935        }
16936
16937        #[inline]
16938        unsafe fn decode(
16939            &mut self,
16940            decoder: &mut fidl::encoding::Decoder<
16941                '_,
16942                fidl::encoding::DefaultFuchsiaResourceDialect,
16943            >,
16944            offset: usize,
16945            _depth: fidl::encoding::Depth,
16946        ) -> fidl::Result<()> {
16947            decoder.debug_check_bounds::<Self>(offset);
16948            // Verify that padding bytes are zero.
16949            fidl::decode!(
16950                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16951                fidl::encoding::DefaultFuchsiaResourceDialect,
16952                &mut self.s,
16953                decoder,
16954                offset + 0,
16955                _depth
16956            )?;
16957            Ok(())
16958        }
16959    }
16960
16961    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
16962        type Borrowed<'a> = &'a mut Self;
16963        fn take_or_borrow<'a>(
16964            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16965        ) -> Self::Borrowed<'a> {
16966            value
16967        }
16968    }
16969
16970    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
16971        type Owned = Self;
16972
16973        #[inline(always)]
16974        fn inline_align(_context: fidl::encoding::Context) -> usize {
16975            4
16976        }
16977
16978        #[inline(always)]
16979        fn inline_size(_context: fidl::encoding::Context) -> usize {
16980            4
16981        }
16982    }
16983
16984    unsafe impl
16985        fidl::encoding::Encode<
16986            ProviderSocketResponse,
16987            fidl::encoding::DefaultFuchsiaResourceDialect,
16988        > for &mut ProviderSocketResponse
16989    {
16990        #[inline]
16991        unsafe fn encode(
16992            self,
16993            encoder: &mut fidl::encoding::Encoder<
16994                '_,
16995                fidl::encoding::DefaultFuchsiaResourceDialect,
16996            >,
16997            offset: usize,
16998            _depth: fidl::encoding::Depth,
16999        ) -> fidl::Result<()> {
17000            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17001            // Delegate to tuple encoding.
17002            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17003                (
17004                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17005                ),
17006                encoder, offset, _depth
17007            )
17008        }
17009    }
17010    unsafe impl<
17011        T0: fidl::encoding::Encode<
17012                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17013                fidl::encoding::DefaultFuchsiaResourceDialect,
17014            >,
17015    >
17016        fidl::encoding::Encode<
17017            ProviderSocketResponse,
17018            fidl::encoding::DefaultFuchsiaResourceDialect,
17019        > for (T0,)
17020    {
17021        #[inline]
17022        unsafe fn encode(
17023            self,
17024            encoder: &mut fidl::encoding::Encoder<
17025                '_,
17026                fidl::encoding::DefaultFuchsiaResourceDialect,
17027            >,
17028            offset: usize,
17029            depth: fidl::encoding::Depth,
17030        ) -> fidl::Result<()> {
17031            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17032            // Zero out padding regions. There's no need to apply masks
17033            // because the unmasked parts will be overwritten by fields.
17034            // Write the fields.
17035            self.0.encode(encoder, offset + 0, depth)?;
17036            Ok(())
17037        }
17038    }
17039
17040    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17041        for ProviderSocketResponse
17042    {
17043        #[inline(always)]
17044        fn new_empty() -> Self {
17045            Self {
17046                s: fidl::new_empty!(
17047                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17048                    fidl::encoding::DefaultFuchsiaResourceDialect
17049                ),
17050            }
17051        }
17052
17053        #[inline]
17054        unsafe fn decode(
17055            &mut self,
17056            decoder: &mut fidl::encoding::Decoder<
17057                '_,
17058                fidl::encoding::DefaultFuchsiaResourceDialect,
17059            >,
17060            offset: usize,
17061            _depth: fidl::encoding::Depth,
17062        ) -> fidl::Result<()> {
17063            decoder.debug_check_bounds::<Self>(offset);
17064            // Verify that padding bytes are zero.
17065            fidl::decode!(
17066                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17067                fidl::encoding::DefaultFuchsiaResourceDialect,
17068                &mut self.s,
17069                decoder,
17070                offset + 0,
17071                _depth
17072            )?;
17073            Ok(())
17074        }
17075    }
17076
17077    impl SocketDescribeResponse {
17078        #[inline(always)]
17079        fn max_ordinal_present(&self) -> u64 {
17080            if let Some(_) = self.event {
17081                return 1;
17082            }
17083            0
17084        }
17085    }
17086
17087    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
17088        type Borrowed<'a> = &'a mut Self;
17089        fn take_or_borrow<'a>(
17090            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17091        ) -> Self::Borrowed<'a> {
17092            value
17093        }
17094    }
17095
17096    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
17097        type Owned = Self;
17098
17099        #[inline(always)]
17100        fn inline_align(_context: fidl::encoding::Context) -> usize {
17101            8
17102        }
17103
17104        #[inline(always)]
17105        fn inline_size(_context: fidl::encoding::Context) -> usize {
17106            16
17107        }
17108    }
17109
17110    unsafe impl
17111        fidl::encoding::Encode<
17112            SocketDescribeResponse,
17113            fidl::encoding::DefaultFuchsiaResourceDialect,
17114        > for &mut SocketDescribeResponse
17115    {
17116        unsafe fn encode(
17117            self,
17118            encoder: &mut fidl::encoding::Encoder<
17119                '_,
17120                fidl::encoding::DefaultFuchsiaResourceDialect,
17121            >,
17122            offset: usize,
17123            mut depth: fidl::encoding::Depth,
17124        ) -> fidl::Result<()> {
17125            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
17126            // Vector header
17127            let max_ordinal: u64 = self.max_ordinal_present();
17128            encoder.write_num(max_ordinal, offset);
17129            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17130            // Calling encoder.out_of_line_offset(0) is not allowed.
17131            if max_ordinal == 0 {
17132                return Ok(());
17133            }
17134            depth.increment()?;
17135            let envelope_size = 8;
17136            let bytes_len = max_ordinal as usize * envelope_size;
17137            #[allow(unused_variables)]
17138            let offset = encoder.out_of_line_offset(bytes_len);
17139            let mut _prev_end_offset: usize = 0;
17140            if 1 > max_ordinal {
17141                return Ok(());
17142            }
17143
17144            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17145            // are envelope_size bytes.
17146            let cur_offset: usize = (1 - 1) * envelope_size;
17147
17148            // Zero reserved fields.
17149            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17150
17151            // Safety:
17152            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17153            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17154            //   envelope_size bytes, there is always sufficient room.
17155            fidl::encoding::encode_in_envelope_optional::<
17156                fidl::encoding::HandleType<
17157                    fidl::EventPair,
17158                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17159                    2147483648,
17160                >,
17161                fidl::encoding::DefaultFuchsiaResourceDialect,
17162            >(
17163                self.event.as_mut().map(
17164                    <fidl::encoding::HandleType<
17165                        fidl::EventPair,
17166                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17167                        2147483648,
17168                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
17169                ),
17170                encoder,
17171                offset + cur_offset,
17172                depth,
17173            )?;
17174
17175            _prev_end_offset = cur_offset + envelope_size;
17176
17177            Ok(())
17178        }
17179    }
17180
17181    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17182        for SocketDescribeResponse
17183    {
17184        #[inline(always)]
17185        fn new_empty() -> Self {
17186            Self::default()
17187        }
17188
17189        unsafe fn decode(
17190            &mut self,
17191            decoder: &mut fidl::encoding::Decoder<
17192                '_,
17193                fidl::encoding::DefaultFuchsiaResourceDialect,
17194            >,
17195            offset: usize,
17196            mut depth: fidl::encoding::Depth,
17197        ) -> fidl::Result<()> {
17198            decoder.debug_check_bounds::<Self>(offset);
17199            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17200                None => return Err(fidl::Error::NotNullable),
17201                Some(len) => len,
17202            };
17203            // Calling decoder.out_of_line_offset(0) is not allowed.
17204            if len == 0 {
17205                return Ok(());
17206            };
17207            depth.increment()?;
17208            let envelope_size = 8;
17209            let bytes_len = len * envelope_size;
17210            let offset = decoder.out_of_line_offset(bytes_len)?;
17211            // Decode the envelope for each type.
17212            let mut _next_ordinal_to_read = 0;
17213            let mut next_offset = offset;
17214            let end_offset = offset + bytes_len;
17215            _next_ordinal_to_read += 1;
17216            if next_offset >= end_offset {
17217                return Ok(());
17218            }
17219
17220            // Decode unknown envelopes for gaps in ordinals.
17221            while _next_ordinal_to_read < 1 {
17222                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17223                _next_ordinal_to_read += 1;
17224                next_offset += envelope_size;
17225            }
17226
17227            let next_out_of_line = decoder.next_out_of_line();
17228            let handles_before = decoder.remaining_handles();
17229            if let Some((inlined, num_bytes, num_handles)) =
17230                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17231            {
17232                let member_inline_size = <fidl::encoding::HandleType<
17233                    fidl::EventPair,
17234                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17235                    2147483648,
17236                > as fidl::encoding::TypeMarker>::inline_size(
17237                    decoder.context
17238                );
17239                if inlined != (member_inline_size <= 4) {
17240                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17241                }
17242                let inner_offset;
17243                let mut inner_depth = depth.clone();
17244                if inlined {
17245                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17246                    inner_offset = next_offset;
17247                } else {
17248                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17249                    inner_depth.increment()?;
17250                }
17251                let val_ref =
17252                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
17253                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
17254                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17255                {
17256                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17257                }
17258                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17259                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17260                }
17261            }
17262
17263            next_offset += envelope_size;
17264
17265            // Decode the remaining unknown envelopes.
17266            while next_offset < end_offset {
17267                _next_ordinal_to_read += 1;
17268                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17269                next_offset += envelope_size;
17270            }
17271
17272            Ok(())
17273        }
17274    }
17275}