Skip to main content

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        Self { client: fidl::client::sync::Client::new(channel) }
116    }
117
118    pub fn into_channel(self) -> fidl::Channel {
119        self.client.into_channel()
120    }
121
122    /// Waits until an event arrives and returns it. It is safe for other
123    /// threads to make concurrent requests while waiting for an event.
124    pub fn wait_for_event(
125        &self,
126        deadline: zx::MonotonicInstant,
127    ) -> Result<ProviderEvent, fidl::Error> {
128        ProviderEvent::decode(self.client.wait_for_event::<ProviderMarker>(deadline)?)
129    }
130
131    /// Requests a raw socket.
132    pub fn r#socket(
133        &self,
134        mut domain: fidl_fuchsia_posix_socket::Domain,
135        mut proto: &ProtocolAssociation,
136        ___deadline: zx::MonotonicInstant,
137    ) -> Result<ProviderSocketResult, fidl::Error> {
138        let _response =
139            self.client.send_query::<ProviderSocketRequest, fidl::encoding::ResultType<
140                ProviderSocketResponse,
141                fidl_fuchsia_posix::Errno,
142            >, ProviderMarker>(
143                (domain, proto),
144                0xdfa6a591ab48fd1,
145                fidl::encoding::DynamicFlags::empty(),
146                ___deadline,
147            )?;
148        Ok(_response.map(|x| x.s))
149    }
150
151    /// Requests a raw socket with creation options.
152    pub fn r#socket_with_options(
153        &self,
154        mut domain: fidl_fuchsia_posix_socket::Domain,
155        mut proto: &ProtocolAssociation,
156        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
157        ___deadline: zx::MonotonicInstant,
158    ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
159        let _response =
160            self.client.send_query::<ProviderSocketWithOptionsRequest, fidl::encoding::ResultType<
161                ProviderSocketWithOptionsResponse,
162                fidl_fuchsia_posix::Errno,
163            >, ProviderMarker>(
164                (domain, proto, &mut opts),
165                0x34cd6e7e82c46f85,
166                fidl::encoding::DynamicFlags::empty(),
167                ___deadline,
168            )?;
169        Ok(_response.map(|x| x.s))
170    }
171}
172
173#[cfg(target_os = "fuchsia")]
174impl From<ProviderSynchronousProxy> for zx::NullableHandle {
175    fn from(value: ProviderSynchronousProxy) -> Self {
176        value.into_channel().into()
177    }
178}
179
180#[cfg(target_os = "fuchsia")]
181impl From<fidl::Channel> for ProviderSynchronousProxy {
182    fn from(value: fidl::Channel) -> Self {
183        Self::new(value)
184    }
185}
186
187#[cfg(target_os = "fuchsia")]
188impl fidl::endpoints::FromClient for ProviderSynchronousProxy {
189    type Protocol = ProviderMarker;
190
191    fn from_client(value: fidl::endpoints::ClientEnd<ProviderMarker>) -> Self {
192        Self::new(value.into_channel())
193    }
194}
195
196#[derive(Debug, Clone)]
197pub struct ProviderProxy {
198    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
199}
200
201impl fidl::endpoints::Proxy for ProviderProxy {
202    type Protocol = ProviderMarker;
203
204    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
205        Self::new(inner)
206    }
207
208    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
209        self.client.into_channel().map_err(|client| Self { client })
210    }
211
212    fn as_channel(&self) -> &::fidl::AsyncChannel {
213        self.client.as_channel()
214    }
215}
216
217impl ProviderProxy {
218    /// Create a new Proxy for fuchsia.posix.socket.raw/Provider.
219    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
220        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
221        Self { client: fidl::client::Client::new(channel, protocol_name) }
222    }
223
224    /// Get a Stream of events from the remote end of the protocol.
225    ///
226    /// # Panics
227    ///
228    /// Panics if the event stream was already taken.
229    pub fn take_event_stream(&self) -> ProviderEventStream {
230        ProviderEventStream { event_receiver: self.client.take_event_receiver() }
231    }
232
233    /// Requests a raw socket.
234    pub fn r#socket(
235        &self,
236        mut domain: fidl_fuchsia_posix_socket::Domain,
237        mut proto: &ProtocolAssociation,
238    ) -> fidl::client::QueryResponseFut<
239        ProviderSocketResult,
240        fidl::encoding::DefaultFuchsiaResourceDialect,
241    > {
242        ProviderProxyInterface::r#socket(self, domain, proto)
243    }
244
245    /// Requests a raw socket with creation options.
246    pub fn r#socket_with_options(
247        &self,
248        mut domain: fidl_fuchsia_posix_socket::Domain,
249        mut proto: &ProtocolAssociation,
250        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
251    ) -> fidl::client::QueryResponseFut<
252        ProviderSocketWithOptionsResult,
253        fidl::encoding::DefaultFuchsiaResourceDialect,
254    > {
255        ProviderProxyInterface::r#socket_with_options(self, domain, proto, opts)
256    }
257}
258
259impl ProviderProxyInterface for ProviderProxy {
260    type SocketResponseFut = fidl::client::QueryResponseFut<
261        ProviderSocketResult,
262        fidl::encoding::DefaultFuchsiaResourceDialect,
263    >;
264    fn r#socket(
265        &self,
266        mut domain: fidl_fuchsia_posix_socket::Domain,
267        mut proto: &ProtocolAssociation,
268    ) -> Self::SocketResponseFut {
269        fn _decode(
270            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
271        ) -> Result<ProviderSocketResult, fidl::Error> {
272            let _response = fidl::client::decode_transaction_body::<
273                fidl::encoding::ResultType<ProviderSocketResponse, fidl_fuchsia_posix::Errno>,
274                fidl::encoding::DefaultFuchsiaResourceDialect,
275                0xdfa6a591ab48fd1,
276            >(_buf?)?;
277            Ok(_response.map(|x| x.s))
278        }
279        self.client.send_query_and_decode::<ProviderSocketRequest, ProviderSocketResult>(
280            (domain, proto),
281            0xdfa6a591ab48fd1,
282            fidl::encoding::DynamicFlags::empty(),
283            _decode,
284        )
285    }
286
287    type SocketWithOptionsResponseFut = fidl::client::QueryResponseFut<
288        ProviderSocketWithOptionsResult,
289        fidl::encoding::DefaultFuchsiaResourceDialect,
290    >;
291    fn r#socket_with_options(
292        &self,
293        mut domain: fidl_fuchsia_posix_socket::Domain,
294        mut proto: &ProtocolAssociation,
295        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
296    ) -> Self::SocketWithOptionsResponseFut {
297        fn _decode(
298            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
299        ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
300            let _response = fidl::client::decode_transaction_body::<
301                fidl::encoding::ResultType<
302                    ProviderSocketWithOptionsResponse,
303                    fidl_fuchsia_posix::Errno,
304                >,
305                fidl::encoding::DefaultFuchsiaResourceDialect,
306                0x34cd6e7e82c46f85,
307            >(_buf?)?;
308            Ok(_response.map(|x| x.s))
309        }
310        self.client.send_query_and_decode::<
311            ProviderSocketWithOptionsRequest,
312            ProviderSocketWithOptionsResult,
313        >(
314            (domain, proto, &mut opts,),
315            0x34cd6e7e82c46f85,
316            fidl::encoding::DynamicFlags::empty(),
317            _decode,
318        )
319    }
320}
321
322pub struct ProviderEventStream {
323    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
324}
325
326impl std::marker::Unpin for ProviderEventStream {}
327
328impl futures::stream::FusedStream for ProviderEventStream {
329    fn is_terminated(&self) -> bool {
330        self.event_receiver.is_terminated()
331    }
332}
333
334impl futures::Stream for ProviderEventStream {
335    type Item = Result<ProviderEvent, fidl::Error>;
336
337    fn poll_next(
338        mut self: std::pin::Pin<&mut Self>,
339        cx: &mut std::task::Context<'_>,
340    ) -> std::task::Poll<Option<Self::Item>> {
341        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
342            &mut self.event_receiver,
343            cx
344        )?) {
345            Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
346            None => std::task::Poll::Ready(None),
347        }
348    }
349}
350
351#[derive(Debug)]
352pub enum ProviderEvent {}
353
354impl ProviderEvent {
355    /// Decodes a message buffer as a [`ProviderEvent`].
356    fn decode(
357        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
358    ) -> Result<ProviderEvent, fidl::Error> {
359        let (bytes, _handles) = buf.split_mut();
360        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
361        debug_assert_eq!(tx_header.tx_id, 0);
362        match tx_header.ordinal {
363            _ => Err(fidl::Error::UnknownOrdinal {
364                ordinal: tx_header.ordinal,
365                protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
366            }),
367        }
368    }
369}
370
371/// A Stream of incoming requests for fuchsia.posix.socket.raw/Provider.
372pub struct ProviderRequestStream {
373    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
374    is_terminated: bool,
375}
376
377impl std::marker::Unpin for ProviderRequestStream {}
378
379impl futures::stream::FusedStream for ProviderRequestStream {
380    fn is_terminated(&self) -> bool {
381        self.is_terminated
382    }
383}
384
385impl fidl::endpoints::RequestStream for ProviderRequestStream {
386    type Protocol = ProviderMarker;
387    type ControlHandle = ProviderControlHandle;
388
389    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
390        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
391    }
392
393    fn control_handle(&self) -> Self::ControlHandle {
394        ProviderControlHandle { inner: self.inner.clone() }
395    }
396
397    fn into_inner(
398        self,
399    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
400    {
401        (self.inner, self.is_terminated)
402    }
403
404    fn from_inner(
405        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
406        is_terminated: bool,
407    ) -> Self {
408        Self { inner, is_terminated }
409    }
410}
411
412impl futures::Stream for ProviderRequestStream {
413    type Item = Result<ProviderRequest, fidl::Error>;
414
415    fn poll_next(
416        mut self: std::pin::Pin<&mut Self>,
417        cx: &mut std::task::Context<'_>,
418    ) -> std::task::Poll<Option<Self::Item>> {
419        let this = &mut *self;
420        if this.inner.check_shutdown(cx) {
421            this.is_terminated = true;
422            return std::task::Poll::Ready(None);
423        }
424        if this.is_terminated {
425            panic!("polled ProviderRequestStream after completion");
426        }
427        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
428            |bytes, handles| {
429                match this.inner.channel().read_etc(cx, bytes, handles) {
430                    std::task::Poll::Ready(Ok(())) => {}
431                    std::task::Poll::Pending => return std::task::Poll::Pending,
432                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
433                        this.is_terminated = true;
434                        return std::task::Poll::Ready(None);
435                    }
436                    std::task::Poll::Ready(Err(e)) => {
437                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
438                            e.into(),
439                        ))));
440                    }
441                }
442
443                // A message has been received from the channel
444                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
445
446                std::task::Poll::Ready(Some(match header.ordinal {
447                    0xdfa6a591ab48fd1 => {
448                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
449                        let mut req = fidl::new_empty!(
450                            ProviderSocketRequest,
451                            fidl::encoding::DefaultFuchsiaResourceDialect
452                        );
453                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketRequest>(&header, _body_bytes, handles, &mut req)?;
454                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
455                        Ok(ProviderRequest::Socket {
456                            domain: req.domain,
457                            proto: req.proto,
458
459                            responder: ProviderSocketResponder {
460                                control_handle: std::mem::ManuallyDrop::new(control_handle),
461                                tx_id: header.tx_id,
462                            },
463                        })
464                    }
465                    0x34cd6e7e82c46f85 => {
466                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
467                        let mut req = fidl::new_empty!(
468                            ProviderSocketWithOptionsRequest,
469                            fidl::encoding::DefaultFuchsiaResourceDialect
470                        );
471                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketWithOptionsRequest>(&header, _body_bytes, handles, &mut req)?;
472                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
473                        Ok(ProviderRequest::SocketWithOptions {
474                            domain: req.domain,
475                            proto: req.proto,
476                            opts: req.opts,
477
478                            responder: ProviderSocketWithOptionsResponder {
479                                control_handle: std::mem::ManuallyDrop::new(control_handle),
480                                tx_id: header.tx_id,
481                            },
482                        })
483                    }
484                    _ => Err(fidl::Error::UnknownOrdinal {
485                        ordinal: header.ordinal,
486                        protocol_name:
487                            <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
488                    }),
489                }))
490            },
491        )
492    }
493}
494
495/// A raw network socket provider.
496#[derive(Debug)]
497pub enum ProviderRequest {
498    /// Requests a raw socket.
499    Socket {
500        domain: fidl_fuchsia_posix_socket::Domain,
501        proto: ProtocolAssociation,
502        responder: ProviderSocketResponder,
503    },
504    /// Requests a raw socket with creation options.
505    SocketWithOptions {
506        domain: fidl_fuchsia_posix_socket::Domain,
507        proto: ProtocolAssociation,
508        opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
509        responder: ProviderSocketWithOptionsResponder,
510    },
511}
512
513impl ProviderRequest {
514    #[allow(irrefutable_let_patterns)]
515    pub fn into_socket(
516        self,
517    ) -> Option<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation, ProviderSocketResponder)>
518    {
519        if let ProviderRequest::Socket { domain, proto, responder } = self {
520            Some((domain, proto, responder))
521        } else {
522            None
523        }
524    }
525
526    #[allow(irrefutable_let_patterns)]
527    pub fn into_socket_with_options(
528        self,
529    ) -> Option<(
530        fidl_fuchsia_posix_socket::Domain,
531        ProtocolAssociation,
532        fidl_fuchsia_posix_socket::SocketCreationOptions,
533        ProviderSocketWithOptionsResponder,
534    )> {
535        if let ProviderRequest::SocketWithOptions { domain, proto, opts, responder } = self {
536            Some((domain, proto, opts, responder))
537        } else {
538            None
539        }
540    }
541
542    /// Name of the method defined in FIDL
543    pub fn method_name(&self) -> &'static str {
544        match *self {
545            ProviderRequest::Socket { .. } => "socket",
546            ProviderRequest::SocketWithOptions { .. } => "socket_with_options",
547        }
548    }
549}
550
551#[derive(Debug, Clone)]
552pub struct ProviderControlHandle {
553    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
554}
555
556impl ProviderControlHandle {
557    pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
558        self.inner.shutdown_with_epitaph(status.into())
559    }
560}
561
562impl fidl::endpoints::ControlHandle for ProviderControlHandle {
563    fn shutdown(&self) {
564        self.inner.shutdown()
565    }
566
567    fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
568        self.inner.shutdown_with_epitaph(status)
569    }
570
571    fn is_closed(&self) -> bool {
572        self.inner.channel().is_closed()
573    }
574    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
575        self.inner.channel().on_closed()
576    }
577
578    #[cfg(target_os = "fuchsia")]
579    fn signal_peer(
580        &self,
581        clear_mask: zx::Signals,
582        set_mask: zx::Signals,
583    ) -> Result<(), zx_status::Status> {
584        use fidl::Peered;
585        self.inner.channel().signal_peer(clear_mask, set_mask)
586    }
587}
588
589impl ProviderControlHandle {}
590
591#[must_use = "FIDL methods require a response to be sent"]
592#[derive(Debug)]
593pub struct ProviderSocketResponder {
594    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
595    tx_id: u32,
596}
597
598/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
599/// if the responder is dropped without sending a response, so that the client
600/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
601impl std::ops::Drop for ProviderSocketResponder {
602    fn drop(&mut self) {
603        self.control_handle.shutdown();
604        // Safety: drops once, never accessed again
605        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
606    }
607}
608
609impl fidl::endpoints::Responder for ProviderSocketResponder {
610    type ControlHandle = ProviderControlHandle;
611
612    fn control_handle(&self) -> &ProviderControlHandle {
613        &self.control_handle
614    }
615
616    fn drop_without_shutdown(mut self) {
617        // Safety: drops once, never accessed again due to mem::forget
618        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
619        // Prevent Drop from running (which would shut down the channel)
620        std::mem::forget(self);
621    }
622}
623
624impl ProviderSocketResponder {
625    /// Sends a response to the FIDL transaction.
626    ///
627    /// Sets the channel to shutdown if an error occurs.
628    pub fn send(
629        self,
630        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
631    ) -> Result<(), fidl::Error> {
632        let _result = self.send_raw(result);
633        if _result.is_err() {
634            self.control_handle.shutdown();
635        }
636        self.drop_without_shutdown();
637        _result
638    }
639
640    /// Similar to "send" but does not shutdown the channel if an error occurs.
641    pub fn send_no_shutdown_on_err(
642        self,
643        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
644    ) -> Result<(), fidl::Error> {
645        let _result = self.send_raw(result);
646        self.drop_without_shutdown();
647        _result
648    }
649
650    fn send_raw(
651        &self,
652        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
653    ) -> Result<(), fidl::Error> {
654        self.control_handle.inner.send::<fidl::encoding::ResultType<
655            ProviderSocketResponse,
656            fidl_fuchsia_posix::Errno,
657        >>(
658            result.map(|s| (s,)),
659            self.tx_id,
660            0xdfa6a591ab48fd1,
661            fidl::encoding::DynamicFlags::empty(),
662        )
663    }
664}
665
666#[must_use = "FIDL methods require a response to be sent"]
667#[derive(Debug)]
668pub struct ProviderSocketWithOptionsResponder {
669    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
670    tx_id: u32,
671}
672
673/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
674/// if the responder is dropped without sending a response, so that the client
675/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
676impl std::ops::Drop for ProviderSocketWithOptionsResponder {
677    fn drop(&mut self) {
678        self.control_handle.shutdown();
679        // Safety: drops once, never accessed again
680        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
681    }
682}
683
684impl fidl::endpoints::Responder for ProviderSocketWithOptionsResponder {
685    type ControlHandle = ProviderControlHandle;
686
687    fn control_handle(&self) -> &ProviderControlHandle {
688        &self.control_handle
689    }
690
691    fn drop_without_shutdown(mut self) {
692        // Safety: drops once, never accessed again due to mem::forget
693        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
694        // Prevent Drop from running (which would shut down the channel)
695        std::mem::forget(self);
696    }
697}
698
699impl ProviderSocketWithOptionsResponder {
700    /// Sends a response to the FIDL transaction.
701    ///
702    /// Sets the channel to shutdown if an error occurs.
703    pub fn send(
704        self,
705        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
706    ) -> Result<(), fidl::Error> {
707        let _result = self.send_raw(result);
708        if _result.is_err() {
709            self.control_handle.shutdown();
710        }
711        self.drop_without_shutdown();
712        _result
713    }
714
715    /// Similar to "send" but does not shutdown the channel if an error occurs.
716    pub fn send_no_shutdown_on_err(
717        self,
718        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
719    ) -> Result<(), fidl::Error> {
720        let _result = self.send_raw(result);
721        self.drop_without_shutdown();
722        _result
723    }
724
725    fn send_raw(
726        &self,
727        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
728    ) -> Result<(), fidl::Error> {
729        self.control_handle.inner.send::<fidl::encoding::ResultType<
730            ProviderSocketWithOptionsResponse,
731            fidl_fuchsia_posix::Errno,
732        >>(
733            result.map(|s| (s,)),
734            self.tx_id,
735            0x34cd6e7e82c46f85,
736            fidl::encoding::DynamicFlags::empty(),
737        )
738    }
739}
740
741#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
742pub struct SocketMarker;
743
744impl fidl::endpoints::ProtocolMarker for SocketMarker {
745    type Proxy = SocketProxy;
746    type RequestStream = SocketRequestStream;
747    #[cfg(target_os = "fuchsia")]
748    type SynchronousProxy = SocketSynchronousProxy;
749
750    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Socket";
751}
752impl fidl::endpoints::DiscoverableProtocolMarker for SocketMarker {}
753pub type SocketRecvMsgResult = Result<
754    (
755        Option<Box<fidl_fuchsia_net::SocketAddress>>,
756        Vec<u8>,
757        fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
758        u32,
759    ),
760    fidl_fuchsia_posix::Errno,
761>;
762pub type SocketSendMsgResult = Result<(), fidl_fuchsia_posix::Errno>;
763pub type SocketGetInfoResult =
764    Result<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation), fidl_fuchsia_posix::Errno>;
765pub type SocketSetIpHeaderIncludedResult = Result<(), fidl_fuchsia_posix::Errno>;
766pub type SocketGetIpHeaderIncludedResult = Result<bool, fidl_fuchsia_posix::Errno>;
767pub type SocketSetIcmpv6FilterResult = Result<(), fidl_fuchsia_posix::Errno>;
768pub type SocketGetIcmpv6FilterResult = Result<Icmpv6Filter, fidl_fuchsia_posix::Errno>;
769pub type SocketSetIpv6ChecksumResult = Result<(), fidl_fuchsia_posix::Errno>;
770pub type SocketGetIpv6ChecksumResult = Result<Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>;
771
772pub trait SocketProxyInterface: Send + Sync {
773    fn r#clone(
774        &self,
775        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
776    ) -> Result<(), fidl::Error>;
777    type CloseResponseFut: std::future::Future<
778            Output = Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error>,
779        > + Send;
780    fn r#close(&self) -> Self::CloseResponseFut;
781    type QueryResponseFut: std::future::Future<Output = Result<Vec<u8>, fidl::Error>> + Send;
782    fn r#query(&self) -> Self::QueryResponseFut;
783    type SetReuseAddressResponseFut: std::future::Future<
784            Output = Result<
785                fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
786                fidl::Error,
787            >,
788        > + Send;
789    fn r#set_reuse_address(&self, value: bool) -> Self::SetReuseAddressResponseFut;
790    type GetReuseAddressResponseFut: std::future::Future<
791            Output = Result<
792                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
793                fidl::Error,
794            >,
795        > + Send;
796    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut;
797    type GetErrorResponseFut: std::future::Future<
798            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error>,
799        > + Send;
800    fn r#get_error(&self) -> Self::GetErrorResponseFut;
801    type SetBroadcastResponseFut: std::future::Future<
802            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error>,
803        > + Send;
804    fn r#set_broadcast(&self, value: bool) -> Self::SetBroadcastResponseFut;
805    type GetBroadcastResponseFut: std::future::Future<
806            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error>,
807        > + Send;
808    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut;
809    type SetSendBufferResponseFut: std::future::Future<
810            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error>,
811        > + Send;
812    fn r#set_send_buffer(&self, value_bytes: u64) -> Self::SetSendBufferResponseFut;
813    type GetSendBufferResponseFut: std::future::Future<
814            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error>,
815        > + Send;
816    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut;
817    type SetReceiveBufferResponseFut: std::future::Future<
818            Output = Result<
819                fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
820                fidl::Error,
821            >,
822        > + Send;
823    fn r#set_receive_buffer(&self, value_bytes: u64) -> Self::SetReceiveBufferResponseFut;
824    type GetReceiveBufferResponseFut: std::future::Future<
825            Output = Result<
826                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
827                fidl::Error,
828            >,
829        > + Send;
830    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut;
831    type SetKeepAliveResponseFut: std::future::Future<
832            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error>,
833        > + Send;
834    fn r#set_keep_alive(&self, value: bool) -> Self::SetKeepAliveResponseFut;
835    type GetKeepAliveResponseFut: std::future::Future<
836            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error>,
837        > + Send;
838    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut;
839    type SetOutOfBandInlineResponseFut: std::future::Future<
840            Output = Result<
841                fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
842                fidl::Error,
843            >,
844        > + Send;
845    fn r#set_out_of_band_inline(&self, value: bool) -> Self::SetOutOfBandInlineResponseFut;
846    type GetOutOfBandInlineResponseFut: std::future::Future<
847            Output = Result<
848                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
849                fidl::Error,
850            >,
851        > + Send;
852    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut;
853    type SetNoCheckResponseFut: std::future::Future<
854            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error>,
855        > + Send;
856    fn r#set_no_check(&self, value: bool) -> Self::SetNoCheckResponseFut;
857    type GetNoCheckResponseFut: std::future::Future<
858            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error>,
859        > + Send;
860    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut;
861    type SetLingerResponseFut: std::future::Future<
862            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error>,
863        > + Send;
864    fn r#set_linger(&self, linger: bool, length_secs: u32) -> Self::SetLingerResponseFut;
865    type GetLingerResponseFut: std::future::Future<
866            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error>,
867        > + Send;
868    fn r#get_linger(&self) -> Self::GetLingerResponseFut;
869    type SetReusePortResponseFut: std::future::Future<
870            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error>,
871        > + Send;
872    fn r#set_reuse_port(
873        &self,
874        value: fidl_fuchsia_posix_socket::ReusePortOption,
875    ) -> Self::SetReusePortResponseFut;
876    type SetReusePortDeprecatedResponseFut: std::future::Future<
877            Output = Result<
878                fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
879                fidl::Error,
880            >,
881        > + Send;
882    fn r#set_reuse_port_deprecated(&self, value: bool) -> Self::SetReusePortDeprecatedResponseFut;
883    type GetReusePortResponseFut: std::future::Future<
884            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
885        > + Send;
886    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
887    type GetAcceptConnResponseFut: std::future::Future<
888            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
889        > + Send;
890    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
891    type SetBindToDeviceResponseFut: std::future::Future<
892            Output = Result<
893                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
894                fidl::Error,
895            >,
896        > + Send;
897    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
898    type GetBindToDeviceResponseFut: std::future::Future<
899            Output = Result<
900                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
901                fidl::Error,
902            >,
903        > + Send;
904    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
905    type SetBindToInterfaceIndexResponseFut: std::future::Future<
906            Output = Result<
907                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
908                fidl::Error,
909            >,
910        > + Send;
911    fn r#set_bind_to_interface_index(&self, value: u64)
912    -> Self::SetBindToInterfaceIndexResponseFut;
913    type GetBindToInterfaceIndexResponseFut: std::future::Future<
914            Output = Result<
915                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
916                fidl::Error,
917            >,
918        > + Send;
919    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
920    type SetTimestampResponseFut: std::future::Future<
921            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
922        > + Send;
923    fn r#set_timestamp(
924        &self,
925        value: fidl_fuchsia_posix_socket::TimestampOption,
926    ) -> Self::SetTimestampResponseFut;
927    type GetTimestampResponseFut: std::future::Future<
928            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
929        > + Send;
930    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
931    type SetMarkResponseFut: std::future::Future<
932            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
933        > + Send;
934    fn r#set_mark(
935        &self,
936        domain: fidl_fuchsia_net::MarkDomain,
937        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
938    ) -> Self::SetMarkResponseFut;
939    type GetMarkResponseFut: std::future::Future<
940            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
941        > + Send;
942    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
943    type GetCookieResponseFut: std::future::Future<
944            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error>,
945        > + Send;
946    fn r#get_cookie(&self) -> Self::GetCookieResponseFut;
947    type BindResponseFut: std::future::Future<
948            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
949        > + Send;
950    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
951    type ConnectResponseFut: std::future::Future<
952            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
953        > + Send;
954    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
955    type DisconnectResponseFut: std::future::Future<
956            Output = Result<
957                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
958                fidl::Error,
959            >,
960        > + Send;
961    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
962    type GetSockNameResponseFut: std::future::Future<
963            Output = Result<
964                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
965                fidl::Error,
966            >,
967        > + Send;
968    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
969    type GetPeerNameResponseFut: std::future::Future<
970            Output = Result<
971                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
972                fidl::Error,
973            >,
974        > + Send;
975    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
976    type ShutdownResponseFut: std::future::Future<
977            Output = Result<
978                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
979                fidl::Error,
980            >,
981        > + Send;
982    fn r#shutdown(
983        &self,
984        mode: fidl_fuchsia_posix_socket::ShutdownMode,
985    ) -> Self::ShutdownResponseFut;
986    type SetIpTypeOfServiceResponseFut: std::future::Future<
987            Output = Result<
988                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
989                fidl::Error,
990            >,
991        > + Send;
992    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
993    type GetIpTypeOfServiceResponseFut: std::future::Future<
994            Output = Result<
995                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
996                fidl::Error,
997            >,
998        > + Send;
999    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
1000    type SetIpTtlResponseFut: std::future::Future<
1001            Output = Result<
1002                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
1003                fidl::Error,
1004            >,
1005        > + Send;
1006    fn r#set_ip_ttl(
1007        &self,
1008        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1009    ) -> Self::SetIpTtlResponseFut;
1010    type GetIpTtlResponseFut: std::future::Future<
1011            Output = Result<
1012                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
1013                fidl::Error,
1014            >,
1015        > + Send;
1016    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1017    type SetIpPacketInfoResponseFut: std::future::Future<
1018            Output = Result<
1019                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1020                fidl::Error,
1021            >,
1022        > + Send;
1023    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1024    type GetIpPacketInfoResponseFut: std::future::Future<
1025            Output = Result<
1026                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1027                fidl::Error,
1028            >,
1029        > + Send;
1030    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1031    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1032            Output = Result<
1033                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1034                fidl::Error,
1035            >,
1036        > + Send;
1037    fn r#set_ip_receive_type_of_service(
1038        &self,
1039        value: bool,
1040    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1041    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1042            Output = Result<
1043                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1044                fidl::Error,
1045            >,
1046        > + Send;
1047    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1048    type SetIpReceiveTtlResponseFut: std::future::Future<
1049            Output = Result<
1050                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1051                fidl::Error,
1052            >,
1053        > + Send;
1054    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1055    type GetIpReceiveTtlResponseFut: std::future::Future<
1056            Output = Result<
1057                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1058                fidl::Error,
1059            >,
1060        > + Send;
1061    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1062    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1063            Output = Result<
1064                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1065                fidl::Error,
1066            >,
1067        > + Send;
1068    fn r#set_ip_multicast_interface(
1069        &self,
1070        iface: u64,
1071        address: &fidl_fuchsia_net::Ipv4Address,
1072    ) -> Self::SetIpMulticastInterfaceResponseFut;
1073    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1074            Output = Result<
1075                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1076                fidl::Error,
1077            >,
1078        > + Send;
1079    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1080    type SetIpMulticastTtlResponseFut: std::future::Future<
1081            Output = Result<
1082                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1083                fidl::Error,
1084            >,
1085        > + Send;
1086    fn r#set_ip_multicast_ttl(
1087        &self,
1088        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1089    ) -> Self::SetIpMulticastTtlResponseFut;
1090    type GetIpMulticastTtlResponseFut: std::future::Future<
1091            Output = Result<
1092                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1093                fidl::Error,
1094            >,
1095        > + Send;
1096    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1097    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1098            Output = Result<
1099                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1100                fidl::Error,
1101            >,
1102        > + Send;
1103    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1104    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1105            Output = Result<
1106                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1107                fidl::Error,
1108            >,
1109        > + Send;
1110    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1111    type AddIpMembershipResponseFut: std::future::Future<
1112            Output = Result<
1113                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1114                fidl::Error,
1115            >,
1116        > + Send;
1117    fn r#add_ip_membership(
1118        &self,
1119        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1120    ) -> Self::AddIpMembershipResponseFut;
1121    type DropIpMembershipResponseFut: std::future::Future<
1122            Output = Result<
1123                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1124                fidl::Error,
1125            >,
1126        > + Send;
1127    fn r#drop_ip_membership(
1128        &self,
1129        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1130    ) -> Self::DropIpMembershipResponseFut;
1131    type SetIpTransparentResponseFut: std::future::Future<
1132            Output = Result<
1133                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1134                fidl::Error,
1135            >,
1136        > + Send;
1137    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1138    type GetIpTransparentResponseFut: std::future::Future<
1139            Output = Result<
1140                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1141                fidl::Error,
1142            >,
1143        > + Send;
1144    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1145    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1146    fn r#set_ip_receive_original_destination_address(
1147        &self,
1148        value: bool,
1149    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1150    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1151    fn r#get_ip_receive_original_destination_address(
1152        &self,
1153    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1154    type AddIpv6MembershipResponseFut: std::future::Future<
1155            Output = Result<
1156                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1157                fidl::Error,
1158            >,
1159        > + Send;
1160    fn r#add_ipv6_membership(
1161        &self,
1162        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1163    ) -> Self::AddIpv6MembershipResponseFut;
1164    type DropIpv6MembershipResponseFut: std::future::Future<
1165            Output = Result<
1166                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1167                fidl::Error,
1168            >,
1169        > + Send;
1170    fn r#drop_ipv6_membership(
1171        &self,
1172        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1173    ) -> Self::DropIpv6MembershipResponseFut;
1174    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1175            Output = Result<
1176                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1177                fidl::Error,
1178            >,
1179        > + Send;
1180    fn r#set_ipv6_multicast_interface(
1181        &self,
1182        value: u64,
1183    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1184    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1185            Output = Result<
1186                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1187                fidl::Error,
1188            >,
1189        > + Send;
1190    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1191    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1192            Output = Result<
1193                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1194                fidl::Error,
1195            >,
1196        > + Send;
1197    fn r#set_ipv6_unicast_hops(
1198        &self,
1199        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1200    ) -> Self::SetIpv6UnicastHopsResponseFut;
1201    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1202            Output = Result<
1203                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1204                fidl::Error,
1205            >,
1206        > + Send;
1207    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1208    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1209            Output = Result<
1210                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1211                fidl::Error,
1212            >,
1213        > + Send;
1214    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1215    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1216            Output = Result<
1217                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1218                fidl::Error,
1219            >,
1220        > + Send;
1221    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1222    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1223            Output = Result<
1224                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1225                fidl::Error,
1226            >,
1227        > + Send;
1228    fn r#set_ipv6_multicast_hops(
1229        &self,
1230        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1231    ) -> Self::SetIpv6MulticastHopsResponseFut;
1232    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1233            Output = Result<
1234                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1235                fidl::Error,
1236            >,
1237        > + Send;
1238    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1239    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1240            Output = Result<
1241                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1242                fidl::Error,
1243            >,
1244        > + Send;
1245    fn r#set_ipv6_multicast_loopback(
1246        &self,
1247        value: bool,
1248    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1249    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1250            Output = Result<
1251                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1252                fidl::Error,
1253            >,
1254        > + Send;
1255    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1256    type SetIpv6OnlyResponseFut: std::future::Future<
1257            Output = Result<
1258                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1259                fidl::Error,
1260            >,
1261        > + Send;
1262    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1263    type GetIpv6OnlyResponseFut: std::future::Future<
1264            Output = Result<
1265                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1266                fidl::Error,
1267            >,
1268        > + Send;
1269    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1270    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1271            Output = Result<
1272                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1273                fidl::Error,
1274            >,
1275        > + Send;
1276    fn r#set_ipv6_receive_traffic_class(
1277        &self,
1278        value: bool,
1279    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1280    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1281            Output = Result<
1282                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1283                fidl::Error,
1284            >,
1285        > + Send;
1286    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1287    type SetIpv6TrafficClassResponseFut: std::future::Future<
1288            Output = Result<
1289                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1290                fidl::Error,
1291            >,
1292        > + Send;
1293    fn r#set_ipv6_traffic_class(
1294        &self,
1295        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1296    ) -> Self::SetIpv6TrafficClassResponseFut;
1297    type GetIpv6TrafficClassResponseFut: std::future::Future<
1298            Output = Result<
1299                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1300                fidl::Error,
1301            >,
1302        > + Send;
1303    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1304    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1305            Output = Result<
1306                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1307                fidl::Error,
1308            >,
1309        > + Send;
1310    fn r#set_ipv6_receive_packet_info(
1311        &self,
1312        value: bool,
1313    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1314    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1315            Output = Result<
1316                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1317                fidl::Error,
1318            >,
1319        > + Send;
1320    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1321    type GetOriginalDestinationResponseFut: std::future::Future<
1322            Output = Result<
1323                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1324                fidl::Error,
1325            >,
1326        > + Send;
1327    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1328    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1329        + Send;
1330    fn r#describe(&self) -> Self::DescribeResponseFut;
1331    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1332        + Send;
1333    fn r#recv_msg(
1334        &self,
1335        want_addr: bool,
1336        data_len: u32,
1337        want_control: bool,
1338        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1339    ) -> Self::RecvMsgResponseFut;
1340    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1341        + Send;
1342    fn r#send_msg(
1343        &self,
1344        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1345        data: &[u8],
1346        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1347        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1348    ) -> Self::SendMsgResponseFut;
1349    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1350        + Send;
1351    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1352    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1353        + Send;
1354    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1355    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1356        + Send;
1357    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1358    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1359        + Send;
1360    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1361    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1362        + Send;
1363    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1364    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1365        + Send;
1366    fn r#set_ipv6_checksum(
1367        &self,
1368        config: &Ipv6ChecksumConfiguration,
1369    ) -> Self::SetIpv6ChecksumResponseFut;
1370    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1371        + Send;
1372    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1373}
1374#[derive(Debug)]
1375#[cfg(target_os = "fuchsia")]
1376pub struct SocketSynchronousProxy {
1377    client: fidl::client::sync::Client,
1378}
1379
1380#[cfg(target_os = "fuchsia")]
1381impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1382    type Proxy = SocketProxy;
1383    type Protocol = SocketMarker;
1384
1385    fn from_channel(inner: fidl::Channel) -> Self {
1386        Self::new(inner)
1387    }
1388
1389    fn into_channel(self) -> fidl::Channel {
1390        self.client.into_channel()
1391    }
1392
1393    fn as_channel(&self) -> &fidl::Channel {
1394        self.client.as_channel()
1395    }
1396}
1397
1398#[cfg(target_os = "fuchsia")]
1399impl SocketSynchronousProxy {
1400    pub fn new(channel: fidl::Channel) -> Self {
1401        Self { client: fidl::client::sync::Client::new(channel) }
1402    }
1403
1404    pub fn into_channel(self) -> fidl::Channel {
1405        self.client.into_channel()
1406    }
1407
1408    /// Waits until an event arrives and returns it. It is safe for other
1409    /// threads to make concurrent requests while waiting for an event.
1410    pub fn wait_for_event(
1411        &self,
1412        deadline: zx::MonotonicInstant,
1413    ) -> Result<SocketEvent, fidl::Error> {
1414        SocketEvent::decode(self.client.wait_for_event::<SocketMarker>(deadline)?)
1415    }
1416
1417    pub fn r#clone(
1418        &self,
1419        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1420    ) -> Result<(), fidl::Error> {
1421        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1422            (request,),
1423            0x20d8a7aba2168a79,
1424            fidl::encoding::DynamicFlags::empty(),
1425        )
1426    }
1427
1428    /// Terminates the connection.
1429    ///
1430    /// After calling `Close`, the client must not send any other requests.
1431    ///
1432    /// Servers, after sending the status response, should close the connection
1433    /// regardless of status and without sending an epitaph.
1434    ///
1435    /// Closing the client end of the channel should be semantically equivalent
1436    /// to calling `Close` without knowing when the close has completed or its
1437    /// status.
1438    pub fn r#close(
1439        &self,
1440        ___deadline: zx::MonotonicInstant,
1441    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1442        let _response = self.client.send_query::<
1443            fidl::encoding::EmptyPayload,
1444            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1445            SocketMarker,
1446        >(
1447            (),
1448            0x5ac5d459ad7f657e,
1449            fidl::encoding::DynamicFlags::empty(),
1450            ___deadline,
1451        )?;
1452        Ok(_response.map(|x| x))
1453    }
1454
1455    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1456        let _response = self.client.send_query::<
1457            fidl::encoding::EmptyPayload,
1458            fidl_fuchsia_unknown::QueryableQueryResponse,
1459            SocketMarker,
1460        >(
1461            (),
1462            0x2658edee9decfc06,
1463            fidl::encoding::DynamicFlags::empty(),
1464            ___deadline,
1465        )?;
1466        Ok(_response.protocol)
1467    }
1468
1469    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1470    pub fn r#set_reuse_address(
1471        &self,
1472        mut value: bool,
1473        ___deadline: zx::MonotonicInstant,
1474    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1475        let _response = self.client.send_query::<
1476            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1477            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1478            SocketMarker,
1479        >(
1480            (value,),
1481            0x1fd74ee8b9a4a876,
1482            fidl::encoding::DynamicFlags::empty(),
1483            ___deadline,
1484        )?;
1485        Ok(_response.map(|x| x))
1486    }
1487
1488    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1489    pub fn r#get_reuse_address(
1490        &self,
1491        ___deadline: zx::MonotonicInstant,
1492    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1493        let _response =
1494            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1495                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1496                fidl_fuchsia_posix::Errno,
1497            >, SocketMarker>(
1498                (),
1499                0x67b7206b8d1bc0a5,
1500                fidl::encoding::DynamicFlags::empty(),
1501                ___deadline,
1502            )?;
1503        Ok(_response.map(|x| x.value))
1504    }
1505
1506    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1507    /// Returns the last error if there is an error set on the socket.
1508    pub fn r#get_error(
1509        &self,
1510        ___deadline: zx::MonotonicInstant,
1511    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1512        let _response =
1513            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1514                fidl::encoding::EmptyStruct,
1515                fidl_fuchsia_posix::Errno,
1516            >, SocketMarker>(
1517                (),
1518                0x5aad39b33e5f6ebb,
1519                fidl::encoding::DynamicFlags::empty(),
1520                ___deadline,
1521            )?;
1522        Ok(_response.map(|x| x))
1523    }
1524
1525    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1526    pub fn r#set_broadcast(
1527        &self,
1528        mut value: bool,
1529        ___deadline: zx::MonotonicInstant,
1530    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1531        let _response = self.client.send_query::<
1532            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1533            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1534            SocketMarker,
1535        >(
1536            (value,),
1537            0x6023e081ce3cd947,
1538            fidl::encoding::DynamicFlags::empty(),
1539            ___deadline,
1540        )?;
1541        Ok(_response.map(|x| x))
1542    }
1543
1544    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1545    pub fn r#get_broadcast(
1546        &self,
1547        ___deadline: zx::MonotonicInstant,
1548    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1549        let _response =
1550            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1551                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1552                fidl_fuchsia_posix::Errno,
1553            >, SocketMarker>(
1554                (),
1555                0x68796fc556f9780d,
1556                fidl::encoding::DynamicFlags::empty(),
1557                ___deadline,
1558            )?;
1559        Ok(_response.map(|x| x.value))
1560    }
1561
1562    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1563    pub fn r#set_send_buffer(
1564        &self,
1565        mut value_bytes: u64,
1566        ___deadline: zx::MonotonicInstant,
1567    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1568        let _response = self.client.send_query::<
1569            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1570            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1571            SocketMarker,
1572        >(
1573            (value_bytes,),
1574            0x756eac32d73a7a70,
1575            fidl::encoding::DynamicFlags::empty(),
1576            ___deadline,
1577        )?;
1578        Ok(_response.map(|x| x))
1579    }
1580
1581    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1582    pub fn r#get_send_buffer(
1583        &self,
1584        ___deadline: zx::MonotonicInstant,
1585    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1586        let _response =
1587            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1588                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1589                fidl_fuchsia_posix::Errno,
1590            >, SocketMarker>(
1591                (),
1592                0x78a52fd9c7b2410b,
1593                fidl::encoding::DynamicFlags::empty(),
1594                ___deadline,
1595            )?;
1596        Ok(_response.map(|x| x.value_bytes))
1597    }
1598
1599    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1600    pub fn r#set_receive_buffer(
1601        &self,
1602        mut value_bytes: u64,
1603        ___deadline: zx::MonotonicInstant,
1604    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1605        let _response = self.client.send_query::<
1606            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1607            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1608            SocketMarker,
1609        >(
1610            (value_bytes,),
1611            0x6b0cf2f1919c7001,
1612            fidl::encoding::DynamicFlags::empty(),
1613            ___deadline,
1614        )?;
1615        Ok(_response.map(|x| x))
1616    }
1617
1618    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1619    pub fn r#get_receive_buffer(
1620        &self,
1621        ___deadline: zx::MonotonicInstant,
1622    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1623        let _response =
1624            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1625                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1626                fidl_fuchsia_posix::Errno,
1627            >, SocketMarker>(
1628                (),
1629                0x14c1a4b64f709e5c,
1630                fidl::encoding::DynamicFlags::empty(),
1631                ___deadline,
1632            )?;
1633        Ok(_response.map(|x| x.value_bytes))
1634    }
1635
1636    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1637    pub fn r#set_keep_alive(
1638        &self,
1639        mut value: bool,
1640        ___deadline: zx::MonotonicInstant,
1641    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1642        let _response = self.client.send_query::<
1643            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1644            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1645            SocketMarker,
1646        >(
1647            (value,),
1648            0x572df8f0b920d2c7,
1649            fidl::encoding::DynamicFlags::empty(),
1650            ___deadline,
1651        )?;
1652        Ok(_response.map(|x| x))
1653    }
1654
1655    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1656    pub fn r#get_keep_alive(
1657        &self,
1658        ___deadline: zx::MonotonicInstant,
1659    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1660        let _response =
1661            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1662                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1663                fidl_fuchsia_posix::Errno,
1664            >, SocketMarker>(
1665                (),
1666                0x2dd29d3215f2c9d2,
1667                fidl::encoding::DynamicFlags::empty(),
1668                ___deadline,
1669            )?;
1670        Ok(_response.map(|x| x.value))
1671    }
1672
1673    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1674    pub fn r#set_out_of_band_inline(
1675        &self,
1676        mut value: bool,
1677        ___deadline: zx::MonotonicInstant,
1678    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1679        let _response = self.client.send_query::<
1680            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1681            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1682            SocketMarker,
1683        >(
1684            (value,),
1685            0x3ecb49968bee439,
1686            fidl::encoding::DynamicFlags::empty(),
1687            ___deadline,
1688        )?;
1689        Ok(_response.map(|x| x))
1690    }
1691
1692    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1693    pub fn r#get_out_of_band_inline(
1694        &self,
1695        ___deadline: zx::MonotonicInstant,
1696    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1697        let _response =
1698            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1699                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1700                fidl_fuchsia_posix::Errno,
1701            >, SocketMarker>(
1702                (),
1703                0x348c1ab3aeca1745,
1704                fidl::encoding::DynamicFlags::empty(),
1705                ___deadline,
1706            )?;
1707        Ok(_response.map(|x| x.value))
1708    }
1709
1710    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1711    pub fn r#set_no_check(
1712        &self,
1713        mut value: bool,
1714        ___deadline: zx::MonotonicInstant,
1715    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1716        let _response = self.client.send_query::<
1717            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1718            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1719            SocketMarker,
1720        >(
1721            (value,),
1722            0x6bbf00c53a4c78c2,
1723            fidl::encoding::DynamicFlags::empty(),
1724            ___deadline,
1725        )?;
1726        Ok(_response.map(|x| x))
1727    }
1728
1729    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1730    pub fn r#get_no_check(
1731        &self,
1732        ___deadline: zx::MonotonicInstant,
1733    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1734        let _response =
1735            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1736                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1737                fidl_fuchsia_posix::Errno,
1738            >, SocketMarker>(
1739                (),
1740                0x2cd4249286417694,
1741                fidl::encoding::DynamicFlags::empty(),
1742                ___deadline,
1743            )?;
1744        Ok(_response.map(|x| x.value))
1745    }
1746
1747    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1748    pub fn r#set_linger(
1749        &self,
1750        mut linger: bool,
1751        mut length_secs: u32,
1752        ___deadline: zx::MonotonicInstant,
1753    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1754        let _response = self.client.send_query::<
1755            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1756            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1757            SocketMarker,
1758        >(
1759            (linger, length_secs,),
1760            0x45386351246e998e,
1761            fidl::encoding::DynamicFlags::empty(),
1762            ___deadline,
1763        )?;
1764        Ok(_response.map(|x| x))
1765    }
1766
1767    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1768    pub fn r#get_linger(
1769        &self,
1770        ___deadline: zx::MonotonicInstant,
1771    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1772        let _response =
1773            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1774                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1775                fidl_fuchsia_posix::Errno,
1776            >, SocketMarker>(
1777                (),
1778                0x48eb20fc5ccb0e45,
1779                fidl::encoding::DynamicFlags::empty(),
1780                ___deadline,
1781            )?;
1782        Ok(_response.map(|x| (x.linger, x.length_secs)))
1783    }
1784
1785    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1786    pub fn r#set_reuse_port(
1787        &self,
1788        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
1789        ___deadline: zx::MonotonicInstant,
1790    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1791        let _response = self.client.send_query::<
1792            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1793            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1794            SocketMarker,
1795        >(
1796            (&mut value,),
1797            0x547dc9cc0455189e,
1798            fidl::encoding::DynamicFlags::empty(),
1799            ___deadline,
1800        )?;
1801        Ok(_response.map(|x| x))
1802    }
1803
1804    pub fn r#set_reuse_port_deprecated(
1805        &self,
1806        mut value: bool,
1807        ___deadline: zx::MonotonicInstant,
1808    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
1809    {
1810        let _response = self.client.send_query::<
1811            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
1812            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1813            SocketMarker,
1814        >(
1815            (value,),
1816            0x24dd3e5cb36d9ccb,
1817            fidl::encoding::DynamicFlags::empty(),
1818            ___deadline,
1819        )?;
1820        Ok(_response.map(|x| x))
1821    }
1822
1823    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1824    pub fn r#get_reuse_port(
1825        &self,
1826        ___deadline: zx::MonotonicInstant,
1827    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1828        let _response =
1829            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1830                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1831                fidl_fuchsia_posix::Errno,
1832            >, SocketMarker>(
1833                (),
1834                0x7a112c1ab54ff828,
1835                fidl::encoding::DynamicFlags::empty(),
1836                ___deadline,
1837            )?;
1838        Ok(_response.map(|x| x.value))
1839    }
1840
1841    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1842    pub fn r#get_accept_conn(
1843        &self,
1844        ___deadline: zx::MonotonicInstant,
1845    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1846        let _response =
1847            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1848                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1849                fidl_fuchsia_posix::Errno,
1850            >, SocketMarker>(
1851                (),
1852                0x67ce6db6c2ec8966,
1853                fidl::encoding::DynamicFlags::empty(),
1854                ___deadline,
1855            )?;
1856        Ok(_response.map(|x| x.value))
1857    }
1858
1859    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1860    pub fn r#set_bind_to_device(
1861        &self,
1862        mut value: &str,
1863        ___deadline: zx::MonotonicInstant,
1864    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1865        let _response = self.client.send_query::<
1866            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1867            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1868            SocketMarker,
1869        >(
1870            (value,),
1871            0x2118b483f28aafc4,
1872            fidl::encoding::DynamicFlags::empty(),
1873            ___deadline,
1874        )?;
1875        Ok(_response.map(|x| x))
1876    }
1877
1878    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1879    pub fn r#get_bind_to_device(
1880        &self,
1881        ___deadline: zx::MonotonicInstant,
1882    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1883        let _response =
1884            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1885                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1886                fidl_fuchsia_posix::Errno,
1887            >, SocketMarker>(
1888                (),
1889                0x1ab1fbf0ef7906c8,
1890                fidl::encoding::DynamicFlags::empty(),
1891                ___deadline,
1892            )?;
1893        Ok(_response.map(|x| x.value))
1894    }
1895
1896    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1897    /// If `value` is 0, this clears the bound interface.
1898    pub fn r#set_bind_to_interface_index(
1899        &self,
1900        mut value: u64,
1901        ___deadline: zx::MonotonicInstant,
1902    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1903    {
1904        let _response = self.client.send_query::<
1905            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1906            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1907            SocketMarker,
1908        >(
1909            (value,),
1910            0x6e387a0def00821,
1911            fidl::encoding::DynamicFlags::empty(),
1912            ___deadline,
1913        )?;
1914        Ok(_response.map(|x| x))
1915    }
1916
1917    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1918    pub fn r#get_bind_to_interface_index(
1919        &self,
1920        ___deadline: zx::MonotonicInstant,
1921    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
1922    {
1923        let _response =
1924            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1925                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
1926                fidl_fuchsia_posix::Errno,
1927            >, SocketMarker>(
1928                (),
1929                0x59c31dd3e3078295,
1930                fidl::encoding::DynamicFlags::empty(),
1931                ___deadline,
1932            )?;
1933        Ok(_response.map(|x| x.value))
1934    }
1935
1936    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1937    pub fn r#set_timestamp(
1938        &self,
1939        mut value: fidl_fuchsia_posix_socket::TimestampOption,
1940        ___deadline: zx::MonotonicInstant,
1941    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
1942        let _response = self.client.send_query::<
1943            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
1944            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1945            SocketMarker,
1946        >(
1947            (value,),
1948            0x285d6516c263d839,
1949            fidl::encoding::DynamicFlags::empty(),
1950            ___deadline,
1951        )?;
1952        Ok(_response.map(|x| x))
1953    }
1954
1955    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1956    pub fn r#get_timestamp(
1957        &self,
1958        ___deadline: zx::MonotonicInstant,
1959    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
1960        let _response =
1961            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1962                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
1963                fidl_fuchsia_posix::Errno,
1964            >, SocketMarker>(
1965                (),
1966                0x49f2fffbbcc2bd27,
1967                fidl::encoding::DynamicFlags::empty(),
1968                ___deadline,
1969            )?;
1970        Ok(_response.map(|x| x.value))
1971    }
1972
1973    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1974    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1975    /// mark can be set independently in each domain.
1976    pub fn r#set_mark(
1977        &self,
1978        mut domain: fidl_fuchsia_net::MarkDomain,
1979        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1980        ___deadline: zx::MonotonicInstant,
1981    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
1982        let _response = self.client.send_query::<
1983            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
1984            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1985            SocketMarker,
1986        >(
1987            (domain, mark,),
1988            0x6ead6de09f653236,
1989            fidl::encoding::DynamicFlags::empty(),
1990            ___deadline,
1991        )?;
1992        Ok(_response.map(|x| x))
1993    }
1994
1995    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1996    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1997    /// mark can be retrieved independently in each domain.
1998    pub fn r#get_mark(
1999        &self,
2000        mut domain: fidl_fuchsia_net::MarkDomain,
2001        ___deadline: zx::MonotonicInstant,
2002    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
2003        let _response = self.client.send_query::<
2004            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
2005            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
2006            SocketMarker,
2007        >(
2008            (domain,),
2009            0x57a2752c61d93d47,
2010            fidl::encoding::DynamicFlags::empty(),
2011            ___deadline,
2012        )?;
2013        Ok(_response.map(|x| x.mark))
2014    }
2015
2016    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
2017    pub fn r#get_cookie(
2018        &self,
2019        ___deadline: zx::MonotonicInstant,
2020    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
2021        let _response =
2022            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2023                fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
2024                fidl_fuchsia_posix::Errno,
2025            >, SocketMarker>(
2026                (),
2027                0x2c2f47fd8f924e52,
2028                fidl::encoding::DynamicFlags::empty(),
2029                ___deadline,
2030            )?;
2031        Ok(_response.map(|x| x.value))
2032    }
2033
2034    /// Sets the local address used for the socket.
2035    pub fn r#bind(
2036        &self,
2037        mut addr: &fidl_fuchsia_net::SocketAddress,
2038        ___deadline: zx::MonotonicInstant,
2039    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
2040        let _response = self.client.send_query::<
2041            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
2042            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2043            SocketMarker,
2044        >(
2045            (addr,),
2046            0x4bc6400ae92125d,
2047            fidl::encoding::DynamicFlags::empty(),
2048            ___deadline,
2049        )?;
2050        Ok(_response.map(|x| x))
2051    }
2052
2053    /// Initiates a connection to a remote address.
2054    pub fn r#connect(
2055        &self,
2056        mut addr: &fidl_fuchsia_net::SocketAddress,
2057        ___deadline: zx::MonotonicInstant,
2058    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
2059        let _response = self.client.send_query::<
2060            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
2061            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2062            SocketMarker,
2063        >(
2064            (addr,),
2065            0x5f05f19bfdd38871,
2066            fidl::encoding::DynamicFlags::empty(),
2067            ___deadline,
2068        )?;
2069        Ok(_response.map(|x| x))
2070    }
2071
2072    /// Clears connection information from this socket.
2073    pub fn r#disconnect(
2074        &self,
2075        ___deadline: zx::MonotonicInstant,
2076    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
2077        let _response =
2078            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2079                fidl::encoding::EmptyStruct,
2080                fidl_fuchsia_posix::Errno,
2081            >, SocketMarker>(
2082                (),
2083                0x74e63b91f7b29b2,
2084                fidl::encoding::DynamicFlags::empty(),
2085                ___deadline,
2086            )?;
2087        Ok(_response.map(|x| x))
2088    }
2089
2090    /// Retrieves the local socket address.
2091    pub fn r#get_sock_name(
2092        &self,
2093        ___deadline: zx::MonotonicInstant,
2094    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2095        let _response =
2096            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2097                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2098                fidl_fuchsia_posix::Errno,
2099            >, SocketMarker>(
2100                (),
2101                0x475f23f84a1a4f85,
2102                fidl::encoding::DynamicFlags::empty(),
2103                ___deadline,
2104            )?;
2105        Ok(_response.map(|x| x.addr))
2106    }
2107
2108    /// Retrieves the remote socket address.
2109    pub fn r#get_peer_name(
2110        &self,
2111        ___deadline: zx::MonotonicInstant,
2112    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2113        let _response =
2114            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2115                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2116                fidl_fuchsia_posix::Errno,
2117            >, SocketMarker>(
2118                (),
2119                0x1ffecf4bd5b6432e,
2120                fidl::encoding::DynamicFlags::empty(),
2121                ___deadline,
2122            )?;
2123        Ok(_response.map(|x| x.addr))
2124    }
2125
2126    /// Shuts down part of the socket.
2127    pub fn r#shutdown(
2128        &self,
2129        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2130        ___deadline: zx::MonotonicInstant,
2131    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2132        let _response = self.client.send_query::<
2133            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2134            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2135            SocketMarker,
2136        >(
2137            (mode,),
2138            0x247f38b6db68c336,
2139            fidl::encoding::DynamicFlags::empty(),
2140            ___deadline,
2141        )?;
2142        Ok(_response.map(|x| x))
2143    }
2144
2145    /// Set `SOL_IP` -> `IP_TOS`.
2146    pub fn r#set_ip_type_of_service(
2147        &self,
2148        mut value: u8,
2149        ___deadline: zx::MonotonicInstant,
2150    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2151    {
2152        let _response = self.client.send_query::<
2153            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2154            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2155            SocketMarker,
2156        >(
2157            (value,),
2158            0x995c600475b6d46,
2159            fidl::encoding::DynamicFlags::empty(),
2160            ___deadline,
2161        )?;
2162        Ok(_response.map(|x| x))
2163    }
2164
2165    /// Get `SOL_IP` -> `IP_TOS`.
2166    pub fn r#get_ip_type_of_service(
2167        &self,
2168        ___deadline: zx::MonotonicInstant,
2169    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2170    {
2171        let _response =
2172            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2173                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2174                fidl_fuchsia_posix::Errno,
2175            >, SocketMarker>(
2176                (),
2177                0x3814a04259f75fcb,
2178                fidl::encoding::DynamicFlags::empty(),
2179                ___deadline,
2180            )?;
2181        Ok(_response.map(|x| x.value))
2182    }
2183
2184    /// Set `SOL_IP` -> `IP_TTL`.
2185    pub fn r#set_ip_ttl(
2186        &self,
2187        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2188        ___deadline: zx::MonotonicInstant,
2189    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2190        let _response = self.client.send_query::<
2191            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2192            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2193            SocketMarker,
2194        >(
2195            (value,),
2196            0x29e2424b433ae1ef,
2197            fidl::encoding::DynamicFlags::empty(),
2198            ___deadline,
2199        )?;
2200        Ok(_response.map(|x| x))
2201    }
2202
2203    /// Get `SOL_IP` -> `IP_TTL`.
2204    pub fn r#get_ip_ttl(
2205        &self,
2206        ___deadline: zx::MonotonicInstant,
2207    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2208        let _response =
2209            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2210                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2211                fidl_fuchsia_posix::Errno,
2212            >, SocketMarker>(
2213                (),
2214                0x47e47fa1f24da471,
2215                fidl::encoding::DynamicFlags::empty(),
2216                ___deadline,
2217            )?;
2218        Ok(_response.map(|x| x.value))
2219    }
2220
2221    /// Set `SOL_IP` -> `IP_PKTINFO`.
2222    pub fn r#set_ip_packet_info(
2223        &self,
2224        mut value: bool,
2225        ___deadline: zx::MonotonicInstant,
2226    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2227    {
2228        let _response = self.client.send_query::<
2229            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2230            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2231            SocketMarker,
2232        >(
2233            (value,),
2234            0x392d16bee20c0e16,
2235            fidl::encoding::DynamicFlags::empty(),
2236            ___deadline,
2237        )?;
2238        Ok(_response.map(|x| x))
2239    }
2240
2241    /// Get `SOL_IP` -> `IP_PKTINFO`.
2242    pub fn r#get_ip_packet_info(
2243        &self,
2244        ___deadline: zx::MonotonicInstant,
2245    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2246    {
2247        let _response =
2248            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2249                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2250                fidl_fuchsia_posix::Errno,
2251            >, SocketMarker>(
2252                (),
2253                0x54b505f242280740,
2254                fidl::encoding::DynamicFlags::empty(),
2255                ___deadline,
2256            )?;
2257        Ok(_response.map(|x| x.value))
2258    }
2259
2260    /// Set `SOL_IP` -> `IP_RECVTOS`.
2261    pub fn r#set_ip_receive_type_of_service(
2262        &self,
2263        mut value: bool,
2264        ___deadline: zx::MonotonicInstant,
2265    ) -> Result<
2266        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2267        fidl::Error,
2268    > {
2269        let _response = self.client.send_query::<
2270            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2271            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2272            SocketMarker,
2273        >(
2274            (value,),
2275            0x6c4f6714995f84ef,
2276            fidl::encoding::DynamicFlags::empty(),
2277            ___deadline,
2278        )?;
2279        Ok(_response.map(|x| x))
2280    }
2281
2282    /// Get `SOL_IP` -> `IP_RECVTOS`.
2283    pub fn r#get_ip_receive_type_of_service(
2284        &self,
2285        ___deadline: zx::MonotonicInstant,
2286    ) -> Result<
2287        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2288        fidl::Error,
2289    > {
2290        let _response =
2291            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2292                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2293                fidl_fuchsia_posix::Errno,
2294            >, SocketMarker>(
2295                (),
2296                0x4158ba7dc2795960,
2297                fidl::encoding::DynamicFlags::empty(),
2298                ___deadline,
2299            )?;
2300        Ok(_response.map(|x| x.value))
2301    }
2302
2303    /// Set `SOL_IP` -> `IP_RECVTTL`.
2304    pub fn r#set_ip_receive_ttl(
2305        &self,
2306        mut value: bool,
2307        ___deadline: zx::MonotonicInstant,
2308    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2309    {
2310        let _response = self.client.send_query::<
2311            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2312            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2313            SocketMarker,
2314        >(
2315            (value,),
2316            0x46f15be0ce0ab82b,
2317            fidl::encoding::DynamicFlags::empty(),
2318            ___deadline,
2319        )?;
2320        Ok(_response.map(|x| x))
2321    }
2322
2323    /// Get `SOL_IP` -> `IP_RECVTTL`.
2324    pub fn r#get_ip_receive_ttl(
2325        &self,
2326        ___deadline: zx::MonotonicInstant,
2327    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2328    {
2329        let _response =
2330            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2331                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2332                fidl_fuchsia_posix::Errno,
2333            >, SocketMarker>(
2334                (),
2335                0x678ddd5a5dfa2eb5,
2336                fidl::encoding::DynamicFlags::empty(),
2337                ___deadline,
2338            )?;
2339        Ok(_response.map(|x| x.value))
2340    }
2341
2342    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2343    pub fn r#set_ip_multicast_interface(
2344        &self,
2345        mut iface: u64,
2346        mut address: &fidl_fuchsia_net::Ipv4Address,
2347        ___deadline: zx::MonotonicInstant,
2348    ) -> Result<
2349        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2350        fidl::Error,
2351    > {
2352        let _response = self.client.send_query::<
2353            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2354            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2355            SocketMarker,
2356        >(
2357            (iface, address,),
2358            0x752fbfa9b12befe,
2359            fidl::encoding::DynamicFlags::empty(),
2360            ___deadline,
2361        )?;
2362        Ok(_response.map(|x| x))
2363    }
2364
2365    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2366    pub fn r#get_ip_multicast_interface(
2367        &self,
2368        ___deadline: zx::MonotonicInstant,
2369    ) -> Result<
2370        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2371        fidl::Error,
2372    > {
2373        let _response =
2374            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2375                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2376                fidl_fuchsia_posix::Errno,
2377            >, SocketMarker>(
2378                (),
2379                0x320bd14c4df046c4,
2380                fidl::encoding::DynamicFlags::empty(),
2381                ___deadline,
2382            )?;
2383        Ok(_response.map(|x| x.value))
2384    }
2385
2386    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2387    pub fn r#set_ip_multicast_ttl(
2388        &self,
2389        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2390        ___deadline: zx::MonotonicInstant,
2391    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2392    {
2393        let _response = self.client.send_query::<
2394            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2395            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2396            SocketMarker,
2397        >(
2398            (value,),
2399            0x63134d53772916a1,
2400            fidl::encoding::DynamicFlags::empty(),
2401            ___deadline,
2402        )?;
2403        Ok(_response.map(|x| x))
2404    }
2405
2406    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2407    pub fn r#get_ip_multicast_ttl(
2408        &self,
2409        ___deadline: zx::MonotonicInstant,
2410    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2411    {
2412        let _response =
2413            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2414                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2415                fidl_fuchsia_posix::Errno,
2416            >, SocketMarker>(
2417                (),
2418                0x4665cd378f39e1a,
2419                fidl::encoding::DynamicFlags::empty(),
2420                ___deadline,
2421            )?;
2422        Ok(_response.map(|x| x.value))
2423    }
2424
2425    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2426    pub fn r#set_ip_multicast_loopback(
2427        &self,
2428        mut value: bool,
2429        ___deadline: zx::MonotonicInstant,
2430    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2431    {
2432        let _response = self.client.send_query::<
2433            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2434            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2435            SocketMarker,
2436        >(
2437            (value,),
2438            0x20c55c11f00943ea,
2439            fidl::encoding::DynamicFlags::empty(),
2440            ___deadline,
2441        )?;
2442        Ok(_response.map(|x| x))
2443    }
2444
2445    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2446    pub fn r#get_ip_multicast_loopback(
2447        &self,
2448        ___deadline: zx::MonotonicInstant,
2449    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2450    {
2451        let _response =
2452            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2453                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2454                fidl_fuchsia_posix::Errno,
2455            >, SocketMarker>(
2456                (),
2457                0x3b6b26ff558298f2,
2458                fidl::encoding::DynamicFlags::empty(),
2459                ___deadline,
2460            )?;
2461        Ok(_response.map(|x| x.value))
2462    }
2463
2464    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2465    pub fn r#add_ip_membership(
2466        &self,
2467        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2468        ___deadline: zx::MonotonicInstant,
2469    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2470    {
2471        let _response = self.client.send_query::<
2472            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2473            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2474            SocketMarker,
2475        >(
2476            (membership,),
2477            0x76bc7df115a3b4d0,
2478            fidl::encoding::DynamicFlags::empty(),
2479            ___deadline,
2480        )?;
2481        Ok(_response.map(|x| x))
2482    }
2483
2484    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2485    pub fn r#drop_ip_membership(
2486        &self,
2487        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2488        ___deadline: zx::MonotonicInstant,
2489    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2490    {
2491        let _response = self.client.send_query::<
2492            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2493            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2494            SocketMarker,
2495        >(
2496            (membership,),
2497            0x2888f3099188d03,
2498            fidl::encoding::DynamicFlags::empty(),
2499            ___deadline,
2500        )?;
2501        Ok(_response.map(|x| x))
2502    }
2503
2504    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2505    pub fn r#set_ip_transparent(
2506        &self,
2507        mut value: bool,
2508        ___deadline: zx::MonotonicInstant,
2509    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2510    {
2511        let _response = self.client.send_query::<
2512            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2513            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2514            SocketMarker,
2515        >(
2516            (value,),
2517            0x1ae532b0c066e3a0,
2518            fidl::encoding::DynamicFlags::empty(),
2519            ___deadline,
2520        )?;
2521        Ok(_response.map(|x| x))
2522    }
2523
2524    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2525    pub fn r#get_ip_transparent(
2526        &self,
2527        ___deadline: zx::MonotonicInstant,
2528    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2529    {
2530        let _response =
2531            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2532                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2533                fidl_fuchsia_posix::Errno,
2534            >, SocketMarker>(
2535                (),
2536                0x51d43695962ebfb5,
2537                fidl::encoding::DynamicFlags::empty(),
2538                ___deadline,
2539            )?;
2540        Ok(_response.map(|x| x.value))
2541    }
2542
2543    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2544    pub fn r#set_ip_receive_original_destination_address(
2545        &self,
2546        mut value: bool,
2547        ___deadline: zx::MonotonicInstant,
2548    ) -> Result<
2549        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2550        fidl::Error,
2551    > {
2552        let _response = self.client.send_query::<
2553            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2554            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2555            SocketMarker,
2556        >(
2557            (value,),
2558            0x4722b4ce52f7840,
2559            fidl::encoding::DynamicFlags::empty(),
2560            ___deadline,
2561        )?;
2562        Ok(_response.map(|x| x))
2563    }
2564
2565    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2566    pub fn r#get_ip_receive_original_destination_address(
2567        &self,
2568        ___deadline: zx::MonotonicInstant,
2569    ) -> Result<
2570        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2571        fidl::Error,
2572    > {
2573        let _response = self.client.send_query::<
2574            fidl::encoding::EmptyPayload,
2575            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2576            SocketMarker,
2577        >(
2578            (),
2579            0x2a0e7dc5d6bfdfe9,
2580            fidl::encoding::DynamicFlags::empty(),
2581            ___deadline,
2582        )?;
2583        Ok(_response.map(|x| x.value))
2584    }
2585
2586    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2587    pub fn r#add_ipv6_membership(
2588        &self,
2589        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2590        ___deadline: zx::MonotonicInstant,
2591    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2592    {
2593        let _response = self.client.send_query::<
2594            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2595            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2596            SocketMarker,
2597        >(
2598            (membership,),
2599            0x7c94727acb4ea4b3,
2600            fidl::encoding::DynamicFlags::empty(),
2601            ___deadline,
2602        )?;
2603        Ok(_response.map(|x| x))
2604    }
2605
2606    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2607    pub fn r#drop_ipv6_membership(
2608        &self,
2609        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2610        ___deadline: zx::MonotonicInstant,
2611    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2612    {
2613        let _response = self.client.send_query::<
2614            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2615            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2616            SocketMarker,
2617        >(
2618            (membership,),
2619            0x42104c70ccaba304,
2620            fidl::encoding::DynamicFlags::empty(),
2621            ___deadline,
2622        )?;
2623        Ok(_response.map(|x| x))
2624    }
2625
2626    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2627    pub fn r#set_ipv6_multicast_interface(
2628        &self,
2629        mut value: u64,
2630        ___deadline: zx::MonotonicInstant,
2631    ) -> Result<
2632        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2633        fidl::Error,
2634    > {
2635        let _response = self.client.send_query::<
2636            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2637            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2638            SocketMarker,
2639        >(
2640            (value,),
2641            0x135f76db3774ab3b,
2642            fidl::encoding::DynamicFlags::empty(),
2643            ___deadline,
2644        )?;
2645        Ok(_response.map(|x| x))
2646    }
2647
2648    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2649    pub fn r#get_ipv6_multicast_interface(
2650        &self,
2651        ___deadline: zx::MonotonicInstant,
2652    ) -> Result<
2653        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2654        fidl::Error,
2655    > {
2656        let _response =
2657            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2658                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2659                fidl_fuchsia_posix::Errno,
2660            >, SocketMarker>(
2661                (),
2662                0x1f26fcdd348f1882,
2663                fidl::encoding::DynamicFlags::empty(),
2664                ___deadline,
2665            )?;
2666        Ok(_response.map(|x| x.value))
2667    }
2668
2669    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2670    pub fn r#set_ipv6_unicast_hops(
2671        &self,
2672        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2673        ___deadline: zx::MonotonicInstant,
2674    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2675    {
2676        let _response = self.client.send_query::<
2677            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2678            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2679            SocketMarker,
2680        >(
2681            (value,),
2682            0x157d51e98f462859,
2683            fidl::encoding::DynamicFlags::empty(),
2684            ___deadline,
2685        )?;
2686        Ok(_response.map(|x| x))
2687    }
2688
2689    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2690    pub fn r#get_ipv6_unicast_hops(
2691        &self,
2692        ___deadline: zx::MonotonicInstant,
2693    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2694    {
2695        let _response =
2696            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2697                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2698                fidl_fuchsia_posix::Errno,
2699            >, SocketMarker>(
2700                (),
2701                0x21f4641cad8bd8d2,
2702                fidl::encoding::DynamicFlags::empty(),
2703                ___deadline,
2704            )?;
2705        Ok(_response.map(|x| x.value))
2706    }
2707
2708    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2709    pub fn r#set_ipv6_receive_hop_limit(
2710        &self,
2711        mut value: bool,
2712        ___deadline: zx::MonotonicInstant,
2713    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2714    {
2715        let _response = self.client.send_query::<
2716            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2717            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2718            SocketMarker,
2719        >(
2720            (value,),
2721            0x5c24808ed2e84a1e,
2722            fidl::encoding::DynamicFlags::empty(),
2723            ___deadline,
2724        )?;
2725        Ok(_response.map(|x| x))
2726    }
2727
2728    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2729    pub fn r#get_ipv6_receive_hop_limit(
2730        &self,
2731        ___deadline: zx::MonotonicInstant,
2732    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2733    {
2734        let _response =
2735            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2736                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2737                fidl_fuchsia_posix::Errno,
2738            >, SocketMarker>(
2739                (),
2740                0x341e06689885b4c0,
2741                fidl::encoding::DynamicFlags::empty(),
2742                ___deadline,
2743            )?;
2744        Ok(_response.map(|x| x.value))
2745    }
2746
2747    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2748    pub fn r#set_ipv6_multicast_hops(
2749        &self,
2750        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2751        ___deadline: zx::MonotonicInstant,
2752    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2753    {
2754        let _response = self.client.send_query::<
2755            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2756            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2757            SocketMarker,
2758        >(
2759            (value,),
2760            0x25b9cd4d181f82c1,
2761            fidl::encoding::DynamicFlags::empty(),
2762            ___deadline,
2763        )?;
2764        Ok(_response.map(|x| x))
2765    }
2766
2767    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2768    pub fn r#get_ipv6_multicast_hops(
2769        &self,
2770        ___deadline: zx::MonotonicInstant,
2771    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2772    {
2773        let _response =
2774            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2775                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2776                fidl_fuchsia_posix::Errno,
2777            >, SocketMarker>(
2778                (),
2779                0x52916948a365012a,
2780                fidl::encoding::DynamicFlags::empty(),
2781                ___deadline,
2782            )?;
2783        Ok(_response.map(|x| x.value))
2784    }
2785
2786    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2787    pub fn r#set_ipv6_multicast_loopback(
2788        &self,
2789        mut value: bool,
2790        ___deadline: zx::MonotonicInstant,
2791    ) -> Result<
2792        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2793        fidl::Error,
2794    > {
2795        let _response = self.client.send_query::<
2796            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2797            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2798            SocketMarker,
2799        >(
2800            (value,),
2801            0x55701c409ff41b40,
2802            fidl::encoding::DynamicFlags::empty(),
2803            ___deadline,
2804        )?;
2805        Ok(_response.map(|x| x))
2806    }
2807
2808    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2809    pub fn r#get_ipv6_multicast_loopback(
2810        &self,
2811        ___deadline: zx::MonotonicInstant,
2812    ) -> Result<
2813        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2814        fidl::Error,
2815    > {
2816        let _response =
2817            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2818                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2819                fidl_fuchsia_posix::Errno,
2820            >, SocketMarker>(
2821                (),
2822                0x4415b701fde319c3,
2823                fidl::encoding::DynamicFlags::empty(),
2824                ___deadline,
2825            )?;
2826        Ok(_response.map(|x| x.value))
2827    }
2828
2829    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2830    pub fn r#set_ipv6_only(
2831        &self,
2832        mut value: bool,
2833        ___deadline: zx::MonotonicInstant,
2834    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2835        let _response = self.client.send_query::<
2836            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2837            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2838            SocketMarker,
2839        >(
2840            (value,),
2841            0x4873f1364758cbba,
2842            fidl::encoding::DynamicFlags::empty(),
2843            ___deadline,
2844        )?;
2845        Ok(_response.map(|x| x))
2846    }
2847
2848    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2849    pub fn r#get_ipv6_only(
2850        &self,
2851        ___deadline: zx::MonotonicInstant,
2852    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2853        let _response =
2854            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2855                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2856                fidl_fuchsia_posix::Errno,
2857            >, SocketMarker>(
2858                (),
2859                0x4aa3340a1a26b89c,
2860                fidl::encoding::DynamicFlags::empty(),
2861                ___deadline,
2862            )?;
2863        Ok(_response.map(|x| x.value))
2864    }
2865
2866    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2867    pub fn r#set_ipv6_receive_traffic_class(
2868        &self,
2869        mut value: bool,
2870        ___deadline: zx::MonotonicInstant,
2871    ) -> Result<
2872        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2873        fidl::Error,
2874    > {
2875        let _response = self.client.send_query::<
2876            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2877            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2878            SocketMarker,
2879        >(
2880            (value,),
2881            0x58f07c8788d099a0,
2882            fidl::encoding::DynamicFlags::empty(),
2883            ___deadline,
2884        )?;
2885        Ok(_response.map(|x| x))
2886    }
2887
2888    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2889    pub fn r#get_ipv6_receive_traffic_class(
2890        &self,
2891        ___deadline: zx::MonotonicInstant,
2892    ) -> Result<
2893        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2894        fidl::Error,
2895    > {
2896        let _response =
2897            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2898                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2899                fidl_fuchsia_posix::Errno,
2900            >, SocketMarker>(
2901                (),
2902                0x2e334df1da553ffa,
2903                fidl::encoding::DynamicFlags::empty(),
2904                ___deadline,
2905            )?;
2906        Ok(_response.map(|x| x.value))
2907    }
2908
2909    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2910    pub fn r#set_ipv6_traffic_class(
2911        &self,
2912        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2913        ___deadline: zx::MonotonicInstant,
2914    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2915    {
2916        let _response = self.client.send_query::<
2917            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2918            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2919            SocketMarker,
2920        >(
2921            (value,),
2922            0x6af077800c5a0b4f,
2923            fidl::encoding::DynamicFlags::empty(),
2924            ___deadline,
2925        )?;
2926        Ok(_response.map(|x| x))
2927    }
2928
2929    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2930    pub fn r#get_ipv6_traffic_class(
2931        &self,
2932        ___deadline: zx::MonotonicInstant,
2933    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2934    {
2935        let _response =
2936            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2937                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2938                fidl_fuchsia_posix::Errno,
2939            >, SocketMarker>(
2940                (),
2941                0x6baf6eed8fc2f04,
2942                fidl::encoding::DynamicFlags::empty(),
2943                ___deadline,
2944            )?;
2945        Ok(_response.map(|x| x.value))
2946    }
2947
2948    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2949    pub fn r#set_ipv6_receive_packet_info(
2950        &self,
2951        mut value: bool,
2952        ___deadline: zx::MonotonicInstant,
2953    ) -> Result<
2954        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2955        fidl::Error,
2956    > {
2957        let _response = self.client.send_query::<
2958            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2959            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2960            SocketMarker,
2961        >(
2962            (value,),
2963            0x19259775b1a92768,
2964            fidl::encoding::DynamicFlags::empty(),
2965            ___deadline,
2966        )?;
2967        Ok(_response.map(|x| x))
2968    }
2969
2970    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2971    pub fn r#get_ipv6_receive_packet_info(
2972        &self,
2973        ___deadline: zx::MonotonicInstant,
2974    ) -> Result<
2975        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2976        fidl::Error,
2977    > {
2978        let _response =
2979            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2980                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2981                fidl_fuchsia_posix::Errno,
2982            >, SocketMarker>(
2983                (),
2984                0x7acd4a2775baec75,
2985                fidl::encoding::DynamicFlags::empty(),
2986                ___deadline,
2987            )?;
2988        Ok(_response.map(|x| x.value))
2989    }
2990
2991    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2992    pub fn r#get_original_destination(
2993        &self,
2994        ___deadline: zx::MonotonicInstant,
2995    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2996    {
2997        let _response =
2998            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2999                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
3000                fidl_fuchsia_posix::Errno,
3001            >, SocketMarker>(
3002                (),
3003                0x38bf28f0dafdbac0,
3004                fidl::encoding::DynamicFlags::empty(),
3005                ___deadline,
3006            )?;
3007        Ok(_response.map(|x| x.value))
3008    }
3009
3010    pub fn r#describe(
3011        &self,
3012        ___deadline: zx::MonotonicInstant,
3013    ) -> Result<SocketDescribeResponse, fidl::Error> {
3014        let _response = self
3015            .client
3016            .send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse, SocketMarker>(
3017                (),
3018                0x335706eccf54a135,
3019                fidl::encoding::DynamicFlags::empty(),
3020                ___deadline,
3021            )?;
3022        Ok(_response)
3023    }
3024
3025    /// Receives a message from the socket.
3026    ///
3027    /// + request `want_addr` request message's source address information to
3028    ///   be returned.
3029    /// + request `data_len` the maximum allowed length of the response data
3030    ///   buffer.
3031    /// + request `want_control` request ancillary data to be returned.
3032    /// + request `flags` flags for the receive request.
3033    /// - response `addr` the message's source address information, if
3034    ///   requested.
3035    /// - response `data` the message.
3036    /// - response `control` control messages, if requested.
3037    /// - response `truncated` indicates whether or not the returned message
3038    ///   was truncated.
3039    pub fn r#recv_msg(
3040        &self,
3041        mut want_addr: bool,
3042        mut data_len: u32,
3043        mut want_control: bool,
3044        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
3045        ___deadline: zx::MonotonicInstant,
3046    ) -> Result<SocketRecvMsgResult, fidl::Error> {
3047        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
3048            SocketRecvMsgResponse,
3049            fidl_fuchsia_posix::Errno,
3050        >, SocketMarker>(
3051            (want_addr, data_len, want_control, flags),
3052            0x1dfb695351d3aa1d,
3053            fidl::encoding::DynamicFlags::empty(),
3054            ___deadline,
3055        )?;
3056        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
3057    }
3058
3059    /// Sends a message on the socket.
3060    ///
3061    /// + request `addr` the address to send the message to. If unset, will
3062    ///   send to the connected peer.
3063    /// + request `data` the message.
3064    /// + request `control` ancillary data.
3065    /// + request `flags` flags for the send request.
3066    pub fn r#send_msg(
3067        &self,
3068        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
3069        mut data: &[u8],
3070        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
3071        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
3072        ___deadline: zx::MonotonicInstant,
3073    ) -> Result<SocketSendMsgResult, fidl::Error> {
3074        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
3075            fidl::encoding::EmptyStruct,
3076            fidl_fuchsia_posix::Errno,
3077        >, SocketMarker>(
3078            (addr, data, control, flags),
3079            0x2cf1eac9a7fc8958,
3080            fidl::encoding::DynamicFlags::empty(),
3081            ___deadline,
3082        )?;
3083        Ok(_response.map(|x| x))
3084    }
3085
3086    /// Retrieves creation information from the socket.
3087    ///
3088    /// - response `domain` the socket's associated domain.
3089    /// - response `proto` the socket's associated protocol.
3090    pub fn r#get_info(
3091        &self,
3092        ___deadline: zx::MonotonicInstant,
3093    ) -> Result<SocketGetInfoResult, fidl::Error> {
3094        let _response =
3095            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3096                SocketGetInfoResponse,
3097                fidl_fuchsia_posix::Errno,
3098            >, SocketMarker>(
3099                (),
3100                0x39676f75aec339ba,
3101                fidl::encoding::DynamicFlags::empty(),
3102                ___deadline,
3103            )?;
3104        Ok(_response.map(|x| (x.domain, x.proto)))
3105    }
3106
3107    /// Set `SOL_IP` -> `IP_HDRINCL`.
3108    pub fn r#set_ip_header_included(
3109        &self,
3110        mut value: bool,
3111        ___deadline: zx::MonotonicInstant,
3112    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
3113        let _response =
3114            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
3115                fidl::encoding::EmptyStruct,
3116                fidl_fuchsia_posix::Errno,
3117            >, SocketMarker>(
3118                (value,),
3119                0x5d06a606d95e8f3,
3120                fidl::encoding::DynamicFlags::empty(),
3121                ___deadline,
3122            )?;
3123        Ok(_response.map(|x| x))
3124    }
3125
3126    /// Get `SOL_IP` -> `IP_HDRINCL`.
3127    pub fn r#get_ip_header_included(
3128        &self,
3129        ___deadline: zx::MonotonicInstant,
3130    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
3131        let _response =
3132            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3133                SocketGetIpHeaderIncludedResponse,
3134                fidl_fuchsia_posix::Errno,
3135            >, SocketMarker>(
3136                (),
3137                0x76125ad1f4d175f6,
3138                fidl::encoding::DynamicFlags::empty(),
3139                ___deadline,
3140            )?;
3141        Ok(_response.map(|x| x.value))
3142    }
3143
3144    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
3145    pub fn r#set_icmpv6_filter(
3146        &self,
3147        mut filter: &Icmpv6Filter,
3148        ___deadline: zx::MonotonicInstant,
3149    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3150        let _response =
3151            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3152                fidl::encoding::EmptyStruct,
3153                fidl_fuchsia_posix::Errno,
3154            >, SocketMarker>(
3155                (filter,),
3156                0x4ebea92a43ae68a9,
3157                fidl::encoding::DynamicFlags::empty(),
3158                ___deadline,
3159            )?;
3160        Ok(_response.map(|x| x))
3161    }
3162
3163    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3164    pub fn r#get_icmpv6_filter(
3165        &self,
3166        ___deadline: zx::MonotonicInstant,
3167    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3168        let _response =
3169            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3170                SocketGetIcmpv6FilterResponse,
3171                fidl_fuchsia_posix::Errno,
3172            >, SocketMarker>(
3173                (),
3174                0x43bd4f3bc0970ace,
3175                fidl::encoding::DynamicFlags::empty(),
3176                ___deadline,
3177            )?;
3178        Ok(_response.map(|x| x.filter))
3179    }
3180
3181    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3182    pub fn r#set_ipv6_checksum(
3183        &self,
3184        mut config: &Ipv6ChecksumConfiguration,
3185        ___deadline: zx::MonotonicInstant,
3186    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3187        let _response =
3188            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3189                fidl::encoding::EmptyStruct,
3190                fidl_fuchsia_posix::Errno,
3191            >, SocketMarker>(
3192                (config,),
3193                0x18b7809577199cb4,
3194                fidl::encoding::DynamicFlags::empty(),
3195                ___deadline,
3196            )?;
3197        Ok(_response.map(|x| x))
3198    }
3199
3200    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3201    pub fn r#get_ipv6_checksum(
3202        &self,
3203        ___deadline: zx::MonotonicInstant,
3204    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3205        let _response =
3206            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3207                SocketGetIpv6ChecksumResponse,
3208                fidl_fuchsia_posix::Errno,
3209            >, SocketMarker>(
3210                (),
3211                0x1847bf5b2d263dd,
3212                fidl::encoding::DynamicFlags::empty(),
3213                ___deadline,
3214            )?;
3215        Ok(_response.map(|x| x.config))
3216    }
3217}
3218
3219#[cfg(target_os = "fuchsia")]
3220impl From<SocketSynchronousProxy> for zx::NullableHandle {
3221    fn from(value: SocketSynchronousProxy) -> Self {
3222        value.into_channel().into()
3223    }
3224}
3225
3226#[cfg(target_os = "fuchsia")]
3227impl From<fidl::Channel> for SocketSynchronousProxy {
3228    fn from(value: fidl::Channel) -> Self {
3229        Self::new(value)
3230    }
3231}
3232
3233#[cfg(target_os = "fuchsia")]
3234impl fidl::endpoints::FromClient for SocketSynchronousProxy {
3235    type Protocol = SocketMarker;
3236
3237    fn from_client(value: fidl::endpoints::ClientEnd<SocketMarker>) -> Self {
3238        Self::new(value.into_channel())
3239    }
3240}
3241
3242#[derive(Debug, Clone)]
3243pub struct SocketProxy {
3244    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3245}
3246
3247impl fidl::endpoints::Proxy for SocketProxy {
3248    type Protocol = SocketMarker;
3249
3250    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3251        Self::new(inner)
3252    }
3253
3254    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3255        self.client.into_channel().map_err(|client| Self { client })
3256    }
3257
3258    fn as_channel(&self) -> &::fidl::AsyncChannel {
3259        self.client.as_channel()
3260    }
3261}
3262
3263impl SocketProxy {
3264    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3265    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3266        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3267        Self { client: fidl::client::Client::new(channel, protocol_name) }
3268    }
3269
3270    /// Get a Stream of events from the remote end of the protocol.
3271    ///
3272    /// # Panics
3273    ///
3274    /// Panics if the event stream was already taken.
3275    pub fn take_event_stream(&self) -> SocketEventStream {
3276        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3277    }
3278
3279    pub fn r#clone(
3280        &self,
3281        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3282    ) -> Result<(), fidl::Error> {
3283        SocketProxyInterface::r#clone(self, request)
3284    }
3285
3286    /// Terminates the connection.
3287    ///
3288    /// After calling `Close`, the client must not send any other requests.
3289    ///
3290    /// Servers, after sending the status response, should close the connection
3291    /// regardless of status and without sending an epitaph.
3292    ///
3293    /// Closing the client end of the channel should be semantically equivalent
3294    /// to calling `Close` without knowing when the close has completed or its
3295    /// status.
3296    pub fn r#close(
3297        &self,
3298    ) -> fidl::client::QueryResponseFut<
3299        fidl_fuchsia_unknown::CloseableCloseResult,
3300        fidl::encoding::DefaultFuchsiaResourceDialect,
3301    > {
3302        SocketProxyInterface::r#close(self)
3303    }
3304
3305    pub fn r#query(
3306        &self,
3307    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3308    {
3309        SocketProxyInterface::r#query(self)
3310    }
3311
3312    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3313    pub fn r#set_reuse_address(
3314        &self,
3315        mut value: bool,
3316    ) -> fidl::client::QueryResponseFut<
3317        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3318        fidl::encoding::DefaultFuchsiaResourceDialect,
3319    > {
3320        SocketProxyInterface::r#set_reuse_address(self, value)
3321    }
3322
3323    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3324    pub fn r#get_reuse_address(
3325        &self,
3326    ) -> fidl::client::QueryResponseFut<
3327        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3328        fidl::encoding::DefaultFuchsiaResourceDialect,
3329    > {
3330        SocketProxyInterface::r#get_reuse_address(self)
3331    }
3332
3333    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3334    /// Returns the last error if there is an error set on the socket.
3335    pub fn r#get_error(
3336        &self,
3337    ) -> fidl::client::QueryResponseFut<
3338        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3339        fidl::encoding::DefaultFuchsiaResourceDialect,
3340    > {
3341        SocketProxyInterface::r#get_error(self)
3342    }
3343
3344    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3345    pub fn r#set_broadcast(
3346        &self,
3347        mut value: bool,
3348    ) -> fidl::client::QueryResponseFut<
3349        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3350        fidl::encoding::DefaultFuchsiaResourceDialect,
3351    > {
3352        SocketProxyInterface::r#set_broadcast(self, value)
3353    }
3354
3355    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3356    pub fn r#get_broadcast(
3357        &self,
3358    ) -> fidl::client::QueryResponseFut<
3359        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3360        fidl::encoding::DefaultFuchsiaResourceDialect,
3361    > {
3362        SocketProxyInterface::r#get_broadcast(self)
3363    }
3364
3365    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3366    pub fn r#set_send_buffer(
3367        &self,
3368        mut value_bytes: u64,
3369    ) -> fidl::client::QueryResponseFut<
3370        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3371        fidl::encoding::DefaultFuchsiaResourceDialect,
3372    > {
3373        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3374    }
3375
3376    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3377    pub fn r#get_send_buffer(
3378        &self,
3379    ) -> fidl::client::QueryResponseFut<
3380        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3381        fidl::encoding::DefaultFuchsiaResourceDialect,
3382    > {
3383        SocketProxyInterface::r#get_send_buffer(self)
3384    }
3385
3386    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3387    pub fn r#set_receive_buffer(
3388        &self,
3389        mut value_bytes: u64,
3390    ) -> fidl::client::QueryResponseFut<
3391        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3392        fidl::encoding::DefaultFuchsiaResourceDialect,
3393    > {
3394        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3395    }
3396
3397    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3398    pub fn r#get_receive_buffer(
3399        &self,
3400    ) -> fidl::client::QueryResponseFut<
3401        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3402        fidl::encoding::DefaultFuchsiaResourceDialect,
3403    > {
3404        SocketProxyInterface::r#get_receive_buffer(self)
3405    }
3406
3407    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3408    pub fn r#set_keep_alive(
3409        &self,
3410        mut value: bool,
3411    ) -> fidl::client::QueryResponseFut<
3412        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3413        fidl::encoding::DefaultFuchsiaResourceDialect,
3414    > {
3415        SocketProxyInterface::r#set_keep_alive(self, value)
3416    }
3417
3418    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3419    pub fn r#get_keep_alive(
3420        &self,
3421    ) -> fidl::client::QueryResponseFut<
3422        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3423        fidl::encoding::DefaultFuchsiaResourceDialect,
3424    > {
3425        SocketProxyInterface::r#get_keep_alive(self)
3426    }
3427
3428    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3429    pub fn r#set_out_of_band_inline(
3430        &self,
3431        mut value: bool,
3432    ) -> fidl::client::QueryResponseFut<
3433        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3434        fidl::encoding::DefaultFuchsiaResourceDialect,
3435    > {
3436        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3437    }
3438
3439    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3440    pub fn r#get_out_of_band_inline(
3441        &self,
3442    ) -> fidl::client::QueryResponseFut<
3443        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3444        fidl::encoding::DefaultFuchsiaResourceDialect,
3445    > {
3446        SocketProxyInterface::r#get_out_of_band_inline(self)
3447    }
3448
3449    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3450    pub fn r#set_no_check(
3451        &self,
3452        mut value: bool,
3453    ) -> fidl::client::QueryResponseFut<
3454        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3455        fidl::encoding::DefaultFuchsiaResourceDialect,
3456    > {
3457        SocketProxyInterface::r#set_no_check(self, value)
3458    }
3459
3460    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3461    pub fn r#get_no_check(
3462        &self,
3463    ) -> fidl::client::QueryResponseFut<
3464        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3465        fidl::encoding::DefaultFuchsiaResourceDialect,
3466    > {
3467        SocketProxyInterface::r#get_no_check(self)
3468    }
3469
3470    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3471    pub fn r#set_linger(
3472        &self,
3473        mut linger: bool,
3474        mut length_secs: u32,
3475    ) -> fidl::client::QueryResponseFut<
3476        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3477        fidl::encoding::DefaultFuchsiaResourceDialect,
3478    > {
3479        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3480    }
3481
3482    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3483    pub fn r#get_linger(
3484        &self,
3485    ) -> fidl::client::QueryResponseFut<
3486        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3487        fidl::encoding::DefaultFuchsiaResourceDialect,
3488    > {
3489        SocketProxyInterface::r#get_linger(self)
3490    }
3491
3492    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3493    pub fn r#set_reuse_port(
3494        &self,
3495        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
3496    ) -> fidl::client::QueryResponseFut<
3497        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3498        fidl::encoding::DefaultFuchsiaResourceDialect,
3499    > {
3500        SocketProxyInterface::r#set_reuse_port(self, value)
3501    }
3502
3503    pub fn r#set_reuse_port_deprecated(
3504        &self,
3505        mut value: bool,
3506    ) -> fidl::client::QueryResponseFut<
3507        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
3508        fidl::encoding::DefaultFuchsiaResourceDialect,
3509    > {
3510        SocketProxyInterface::r#set_reuse_port_deprecated(self, value)
3511    }
3512
3513    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
3514    pub fn r#get_reuse_port(
3515        &self,
3516    ) -> fidl::client::QueryResponseFut<
3517        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
3518        fidl::encoding::DefaultFuchsiaResourceDialect,
3519    > {
3520        SocketProxyInterface::r#get_reuse_port(self)
3521    }
3522
3523    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
3524    pub fn r#get_accept_conn(
3525        &self,
3526    ) -> fidl::client::QueryResponseFut<
3527        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
3528        fidl::encoding::DefaultFuchsiaResourceDialect,
3529    > {
3530        SocketProxyInterface::r#get_accept_conn(self)
3531    }
3532
3533    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3534    pub fn r#set_bind_to_device(
3535        &self,
3536        mut value: &str,
3537    ) -> fidl::client::QueryResponseFut<
3538        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
3539        fidl::encoding::DefaultFuchsiaResourceDialect,
3540    > {
3541        SocketProxyInterface::r#set_bind_to_device(self, value)
3542    }
3543
3544    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3545    pub fn r#get_bind_to_device(
3546        &self,
3547    ) -> fidl::client::QueryResponseFut<
3548        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
3549        fidl::encoding::DefaultFuchsiaResourceDialect,
3550    > {
3551        SocketProxyInterface::r#get_bind_to_device(self)
3552    }
3553
3554    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3555    /// If `value` is 0, this clears the bound interface.
3556    pub fn r#set_bind_to_interface_index(
3557        &self,
3558        mut value: u64,
3559    ) -> fidl::client::QueryResponseFut<
3560        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
3561        fidl::encoding::DefaultFuchsiaResourceDialect,
3562    > {
3563        SocketProxyInterface::r#set_bind_to_interface_index(self, value)
3564    }
3565
3566    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3567    pub fn r#get_bind_to_interface_index(
3568        &self,
3569    ) -> fidl::client::QueryResponseFut<
3570        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
3571        fidl::encoding::DefaultFuchsiaResourceDialect,
3572    > {
3573        SocketProxyInterface::r#get_bind_to_interface_index(self)
3574    }
3575
3576    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3577    pub fn r#set_timestamp(
3578        &self,
3579        mut value: fidl_fuchsia_posix_socket::TimestampOption,
3580    ) -> fidl::client::QueryResponseFut<
3581        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
3582        fidl::encoding::DefaultFuchsiaResourceDialect,
3583    > {
3584        SocketProxyInterface::r#set_timestamp(self, value)
3585    }
3586
3587    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3588    pub fn r#get_timestamp(
3589        &self,
3590    ) -> fidl::client::QueryResponseFut<
3591        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
3592        fidl::encoding::DefaultFuchsiaResourceDialect,
3593    > {
3594        SocketProxyInterface::r#get_timestamp(self)
3595    }
3596
3597    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3598    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3599    /// mark can be set independently in each domain.
3600    pub fn r#set_mark(
3601        &self,
3602        mut domain: fidl_fuchsia_net::MarkDomain,
3603        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
3604    ) -> fidl::client::QueryResponseFut<
3605        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
3606        fidl::encoding::DefaultFuchsiaResourceDialect,
3607    > {
3608        SocketProxyInterface::r#set_mark(self, domain, mark)
3609    }
3610
3611    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3612    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3613    /// mark can be retrieved independently in each domain.
3614    pub fn r#get_mark(
3615        &self,
3616        mut domain: fidl_fuchsia_net::MarkDomain,
3617    ) -> fidl::client::QueryResponseFut<
3618        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
3619        fidl::encoding::DefaultFuchsiaResourceDialect,
3620    > {
3621        SocketProxyInterface::r#get_mark(self, domain)
3622    }
3623
3624    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
3625    pub fn r#get_cookie(
3626        &self,
3627    ) -> fidl::client::QueryResponseFut<
3628        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
3629        fidl::encoding::DefaultFuchsiaResourceDialect,
3630    > {
3631        SocketProxyInterface::r#get_cookie(self)
3632    }
3633
3634    /// Sets the local address used for the socket.
3635    pub fn r#bind(
3636        &self,
3637        mut addr: &fidl_fuchsia_net::SocketAddress,
3638    ) -> fidl::client::QueryResponseFut<
3639        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
3640        fidl::encoding::DefaultFuchsiaResourceDialect,
3641    > {
3642        SocketProxyInterface::r#bind(self, addr)
3643    }
3644
3645    /// Initiates a connection to a remote address.
3646    pub fn r#connect(
3647        &self,
3648        mut addr: &fidl_fuchsia_net::SocketAddress,
3649    ) -> fidl::client::QueryResponseFut<
3650        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
3651        fidl::encoding::DefaultFuchsiaResourceDialect,
3652    > {
3653        SocketProxyInterface::r#connect(self, addr)
3654    }
3655
3656    /// Clears connection information from this socket.
3657    pub fn r#disconnect(
3658        &self,
3659    ) -> fidl::client::QueryResponseFut<
3660        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
3661        fidl::encoding::DefaultFuchsiaResourceDialect,
3662    > {
3663        SocketProxyInterface::r#disconnect(self)
3664    }
3665
3666    /// Retrieves the local socket address.
3667    pub fn r#get_sock_name(
3668        &self,
3669    ) -> fidl::client::QueryResponseFut<
3670        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
3671        fidl::encoding::DefaultFuchsiaResourceDialect,
3672    > {
3673        SocketProxyInterface::r#get_sock_name(self)
3674    }
3675
3676    /// Retrieves the remote socket address.
3677    pub fn r#get_peer_name(
3678        &self,
3679    ) -> fidl::client::QueryResponseFut<
3680        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
3681        fidl::encoding::DefaultFuchsiaResourceDialect,
3682    > {
3683        SocketProxyInterface::r#get_peer_name(self)
3684    }
3685
3686    /// Shuts down part of the socket.
3687    pub fn r#shutdown(
3688        &self,
3689        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
3690    ) -> fidl::client::QueryResponseFut<
3691        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
3692        fidl::encoding::DefaultFuchsiaResourceDialect,
3693    > {
3694        SocketProxyInterface::r#shutdown(self, mode)
3695    }
3696
3697    /// Set `SOL_IP` -> `IP_TOS`.
3698    pub fn r#set_ip_type_of_service(
3699        &self,
3700        mut value: u8,
3701    ) -> fidl::client::QueryResponseFut<
3702        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
3703        fidl::encoding::DefaultFuchsiaResourceDialect,
3704    > {
3705        SocketProxyInterface::r#set_ip_type_of_service(self, value)
3706    }
3707
3708    /// Get `SOL_IP` -> `IP_TOS`.
3709    pub fn r#get_ip_type_of_service(
3710        &self,
3711    ) -> fidl::client::QueryResponseFut<
3712        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
3713        fidl::encoding::DefaultFuchsiaResourceDialect,
3714    > {
3715        SocketProxyInterface::r#get_ip_type_of_service(self)
3716    }
3717
3718    /// Set `SOL_IP` -> `IP_TTL`.
3719    pub fn r#set_ip_ttl(
3720        &self,
3721        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3722    ) -> fidl::client::QueryResponseFut<
3723        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
3724        fidl::encoding::DefaultFuchsiaResourceDialect,
3725    > {
3726        SocketProxyInterface::r#set_ip_ttl(self, value)
3727    }
3728
3729    /// Get `SOL_IP` -> `IP_TTL`.
3730    pub fn r#get_ip_ttl(
3731        &self,
3732    ) -> fidl::client::QueryResponseFut<
3733        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
3734        fidl::encoding::DefaultFuchsiaResourceDialect,
3735    > {
3736        SocketProxyInterface::r#get_ip_ttl(self)
3737    }
3738
3739    /// Set `SOL_IP` -> `IP_PKTINFO`.
3740    pub fn r#set_ip_packet_info(
3741        &self,
3742        mut value: bool,
3743    ) -> fidl::client::QueryResponseFut<
3744        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
3745        fidl::encoding::DefaultFuchsiaResourceDialect,
3746    > {
3747        SocketProxyInterface::r#set_ip_packet_info(self, value)
3748    }
3749
3750    /// Get `SOL_IP` -> `IP_PKTINFO`.
3751    pub fn r#get_ip_packet_info(
3752        &self,
3753    ) -> fidl::client::QueryResponseFut<
3754        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
3755        fidl::encoding::DefaultFuchsiaResourceDialect,
3756    > {
3757        SocketProxyInterface::r#get_ip_packet_info(self)
3758    }
3759
3760    /// Set `SOL_IP` -> `IP_RECVTOS`.
3761    pub fn r#set_ip_receive_type_of_service(
3762        &self,
3763        mut value: bool,
3764    ) -> fidl::client::QueryResponseFut<
3765        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
3766        fidl::encoding::DefaultFuchsiaResourceDialect,
3767    > {
3768        SocketProxyInterface::r#set_ip_receive_type_of_service(self, value)
3769    }
3770
3771    /// Get `SOL_IP` -> `IP_RECVTOS`.
3772    pub fn r#get_ip_receive_type_of_service(
3773        &self,
3774    ) -> fidl::client::QueryResponseFut<
3775        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
3776        fidl::encoding::DefaultFuchsiaResourceDialect,
3777    > {
3778        SocketProxyInterface::r#get_ip_receive_type_of_service(self)
3779    }
3780
3781    /// Set `SOL_IP` -> `IP_RECVTTL`.
3782    pub fn r#set_ip_receive_ttl(
3783        &self,
3784        mut value: bool,
3785    ) -> fidl::client::QueryResponseFut<
3786        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
3787        fidl::encoding::DefaultFuchsiaResourceDialect,
3788    > {
3789        SocketProxyInterface::r#set_ip_receive_ttl(self, value)
3790    }
3791
3792    /// Get `SOL_IP` -> `IP_RECVTTL`.
3793    pub fn r#get_ip_receive_ttl(
3794        &self,
3795    ) -> fidl::client::QueryResponseFut<
3796        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
3797        fidl::encoding::DefaultFuchsiaResourceDialect,
3798    > {
3799        SocketProxyInterface::r#get_ip_receive_ttl(self)
3800    }
3801
3802    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
3803    pub fn r#set_ip_multicast_interface(
3804        &self,
3805        mut iface: u64,
3806        mut address: &fidl_fuchsia_net::Ipv4Address,
3807    ) -> fidl::client::QueryResponseFut<
3808        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
3809        fidl::encoding::DefaultFuchsiaResourceDialect,
3810    > {
3811        SocketProxyInterface::r#set_ip_multicast_interface(self, iface, address)
3812    }
3813
3814    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
3815    pub fn r#get_ip_multicast_interface(
3816        &self,
3817    ) -> fidl::client::QueryResponseFut<
3818        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
3819        fidl::encoding::DefaultFuchsiaResourceDialect,
3820    > {
3821        SocketProxyInterface::r#get_ip_multicast_interface(self)
3822    }
3823
3824    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
3825    pub fn r#set_ip_multicast_ttl(
3826        &self,
3827        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3828    ) -> fidl::client::QueryResponseFut<
3829        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
3830        fidl::encoding::DefaultFuchsiaResourceDialect,
3831    > {
3832        SocketProxyInterface::r#set_ip_multicast_ttl(self, value)
3833    }
3834
3835    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
3836    pub fn r#get_ip_multicast_ttl(
3837        &self,
3838    ) -> fidl::client::QueryResponseFut<
3839        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
3840        fidl::encoding::DefaultFuchsiaResourceDialect,
3841    > {
3842        SocketProxyInterface::r#get_ip_multicast_ttl(self)
3843    }
3844
3845    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
3846    pub fn r#set_ip_multicast_loopback(
3847        &self,
3848        mut value: bool,
3849    ) -> fidl::client::QueryResponseFut<
3850        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
3851        fidl::encoding::DefaultFuchsiaResourceDialect,
3852    > {
3853        SocketProxyInterface::r#set_ip_multicast_loopback(self, value)
3854    }
3855
3856    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
3857    pub fn r#get_ip_multicast_loopback(
3858        &self,
3859    ) -> fidl::client::QueryResponseFut<
3860        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
3861        fidl::encoding::DefaultFuchsiaResourceDialect,
3862    > {
3863        SocketProxyInterface::r#get_ip_multicast_loopback(self)
3864    }
3865
3866    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
3867    pub fn r#add_ip_membership(
3868        &self,
3869        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3870    ) -> fidl::client::QueryResponseFut<
3871        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
3872        fidl::encoding::DefaultFuchsiaResourceDialect,
3873    > {
3874        SocketProxyInterface::r#add_ip_membership(self, membership)
3875    }
3876
3877    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
3878    pub fn r#drop_ip_membership(
3879        &self,
3880        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3881    ) -> fidl::client::QueryResponseFut<
3882        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
3883        fidl::encoding::DefaultFuchsiaResourceDialect,
3884    > {
3885        SocketProxyInterface::r#drop_ip_membership(self, membership)
3886    }
3887
3888    /// Set `SOL_IP` -> `IP_TRANSPARENT`
3889    pub fn r#set_ip_transparent(
3890        &self,
3891        mut value: bool,
3892    ) -> fidl::client::QueryResponseFut<
3893        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
3894        fidl::encoding::DefaultFuchsiaResourceDialect,
3895    > {
3896        SocketProxyInterface::r#set_ip_transparent(self, value)
3897    }
3898
3899    /// Get `SOL_IP` -> `IP_TRANSPARENT`
3900    pub fn r#get_ip_transparent(
3901        &self,
3902    ) -> fidl::client::QueryResponseFut<
3903        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
3904        fidl::encoding::DefaultFuchsiaResourceDialect,
3905    > {
3906        SocketProxyInterface::r#get_ip_transparent(self)
3907    }
3908
3909    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
3910    pub fn r#set_ip_receive_original_destination_address(
3911        &self,
3912        mut value: bool,
3913    ) -> fidl::client::QueryResponseFut<
3914        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
3915        fidl::encoding::DefaultFuchsiaResourceDialect,
3916    > {
3917        SocketProxyInterface::r#set_ip_receive_original_destination_address(self, value)
3918    }
3919
3920    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
3921    pub fn r#get_ip_receive_original_destination_address(
3922        &self,
3923    ) -> fidl::client::QueryResponseFut<
3924        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
3925        fidl::encoding::DefaultFuchsiaResourceDialect,
3926    > {
3927        SocketProxyInterface::r#get_ip_receive_original_destination_address(self)
3928    }
3929
3930    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
3931    pub fn r#add_ipv6_membership(
3932        &self,
3933        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3934    ) -> fidl::client::QueryResponseFut<
3935        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
3936        fidl::encoding::DefaultFuchsiaResourceDialect,
3937    > {
3938        SocketProxyInterface::r#add_ipv6_membership(self, membership)
3939    }
3940
3941    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
3942    pub fn r#drop_ipv6_membership(
3943        &self,
3944        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3945    ) -> fidl::client::QueryResponseFut<
3946        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
3947        fidl::encoding::DefaultFuchsiaResourceDialect,
3948    > {
3949        SocketProxyInterface::r#drop_ipv6_membership(self, membership)
3950    }
3951
3952    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3953    pub fn r#set_ipv6_multicast_interface(
3954        &self,
3955        mut value: u64,
3956    ) -> fidl::client::QueryResponseFut<
3957        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
3958        fidl::encoding::DefaultFuchsiaResourceDialect,
3959    > {
3960        SocketProxyInterface::r#set_ipv6_multicast_interface(self, value)
3961    }
3962
3963    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3964    pub fn r#get_ipv6_multicast_interface(
3965        &self,
3966    ) -> fidl::client::QueryResponseFut<
3967        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
3968        fidl::encoding::DefaultFuchsiaResourceDialect,
3969    > {
3970        SocketProxyInterface::r#get_ipv6_multicast_interface(self)
3971    }
3972
3973    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3974    pub fn r#set_ipv6_unicast_hops(
3975        &self,
3976        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3977    ) -> fidl::client::QueryResponseFut<
3978        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
3979        fidl::encoding::DefaultFuchsiaResourceDialect,
3980    > {
3981        SocketProxyInterface::r#set_ipv6_unicast_hops(self, value)
3982    }
3983
3984    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3985    pub fn r#get_ipv6_unicast_hops(
3986        &self,
3987    ) -> fidl::client::QueryResponseFut<
3988        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
3989        fidl::encoding::DefaultFuchsiaResourceDialect,
3990    > {
3991        SocketProxyInterface::r#get_ipv6_unicast_hops(self)
3992    }
3993
3994    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3995    pub fn r#set_ipv6_receive_hop_limit(
3996        &self,
3997        mut value: bool,
3998    ) -> fidl::client::QueryResponseFut<
3999        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
4000        fidl::encoding::DefaultFuchsiaResourceDialect,
4001    > {
4002        SocketProxyInterface::r#set_ipv6_receive_hop_limit(self, value)
4003    }
4004
4005    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
4006    pub fn r#get_ipv6_receive_hop_limit(
4007        &self,
4008    ) -> fidl::client::QueryResponseFut<
4009        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
4010        fidl::encoding::DefaultFuchsiaResourceDialect,
4011    > {
4012        SocketProxyInterface::r#get_ipv6_receive_hop_limit(self)
4013    }
4014
4015    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
4016    pub fn r#set_ipv6_multicast_hops(
4017        &self,
4018        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
4019    ) -> fidl::client::QueryResponseFut<
4020        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
4021        fidl::encoding::DefaultFuchsiaResourceDialect,
4022    > {
4023        SocketProxyInterface::r#set_ipv6_multicast_hops(self, value)
4024    }
4025
4026    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
4027    pub fn r#get_ipv6_multicast_hops(
4028        &self,
4029    ) -> fidl::client::QueryResponseFut<
4030        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
4031        fidl::encoding::DefaultFuchsiaResourceDialect,
4032    > {
4033        SocketProxyInterface::r#get_ipv6_multicast_hops(self)
4034    }
4035
4036    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
4037    pub fn r#set_ipv6_multicast_loopback(
4038        &self,
4039        mut value: bool,
4040    ) -> fidl::client::QueryResponseFut<
4041        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
4042        fidl::encoding::DefaultFuchsiaResourceDialect,
4043    > {
4044        SocketProxyInterface::r#set_ipv6_multicast_loopback(self, value)
4045    }
4046
4047    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
4048    pub fn r#get_ipv6_multicast_loopback(
4049        &self,
4050    ) -> fidl::client::QueryResponseFut<
4051        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
4052        fidl::encoding::DefaultFuchsiaResourceDialect,
4053    > {
4054        SocketProxyInterface::r#get_ipv6_multicast_loopback(self)
4055    }
4056
4057    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
4058    pub fn r#set_ipv6_only(
4059        &self,
4060        mut value: bool,
4061    ) -> fidl::client::QueryResponseFut<
4062        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
4063        fidl::encoding::DefaultFuchsiaResourceDialect,
4064    > {
4065        SocketProxyInterface::r#set_ipv6_only(self, value)
4066    }
4067
4068    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
4069    pub fn r#get_ipv6_only(
4070        &self,
4071    ) -> fidl::client::QueryResponseFut<
4072        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
4073        fidl::encoding::DefaultFuchsiaResourceDialect,
4074    > {
4075        SocketProxyInterface::r#get_ipv6_only(self)
4076    }
4077
4078    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
4079    pub fn r#set_ipv6_receive_traffic_class(
4080        &self,
4081        mut value: bool,
4082    ) -> fidl::client::QueryResponseFut<
4083        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
4084        fidl::encoding::DefaultFuchsiaResourceDialect,
4085    > {
4086        SocketProxyInterface::r#set_ipv6_receive_traffic_class(self, value)
4087    }
4088
4089    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
4090    pub fn r#get_ipv6_receive_traffic_class(
4091        &self,
4092    ) -> fidl::client::QueryResponseFut<
4093        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
4094        fidl::encoding::DefaultFuchsiaResourceDialect,
4095    > {
4096        SocketProxyInterface::r#get_ipv6_receive_traffic_class(self)
4097    }
4098
4099    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
4100    pub fn r#set_ipv6_traffic_class(
4101        &self,
4102        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
4103    ) -> fidl::client::QueryResponseFut<
4104        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
4105        fidl::encoding::DefaultFuchsiaResourceDialect,
4106    > {
4107        SocketProxyInterface::r#set_ipv6_traffic_class(self, value)
4108    }
4109
4110    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
4111    pub fn r#get_ipv6_traffic_class(
4112        &self,
4113    ) -> fidl::client::QueryResponseFut<
4114        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
4115        fidl::encoding::DefaultFuchsiaResourceDialect,
4116    > {
4117        SocketProxyInterface::r#get_ipv6_traffic_class(self)
4118    }
4119
4120    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4121    pub fn r#set_ipv6_receive_packet_info(
4122        &self,
4123        mut value: bool,
4124    ) -> fidl::client::QueryResponseFut<
4125        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
4126        fidl::encoding::DefaultFuchsiaResourceDialect,
4127    > {
4128        SocketProxyInterface::r#set_ipv6_receive_packet_info(self, value)
4129    }
4130
4131    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4132    pub fn r#get_ipv6_receive_packet_info(
4133        &self,
4134    ) -> fidl::client::QueryResponseFut<
4135        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
4136        fidl::encoding::DefaultFuchsiaResourceDialect,
4137    > {
4138        SocketProxyInterface::r#get_ipv6_receive_packet_info(self)
4139    }
4140
4141    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
4142    pub fn r#get_original_destination(
4143        &self,
4144    ) -> fidl::client::QueryResponseFut<
4145        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
4146        fidl::encoding::DefaultFuchsiaResourceDialect,
4147    > {
4148        SocketProxyInterface::r#get_original_destination(self)
4149    }
4150
4151    pub fn r#describe(
4152        &self,
4153    ) -> fidl::client::QueryResponseFut<
4154        SocketDescribeResponse,
4155        fidl::encoding::DefaultFuchsiaResourceDialect,
4156    > {
4157        SocketProxyInterface::r#describe(self)
4158    }
4159
4160    /// Receives a message from the socket.
4161    ///
4162    /// + request `want_addr` request message's source address information to
4163    ///   be returned.
4164    /// + request `data_len` the maximum allowed length of the response data
4165    ///   buffer.
4166    /// + request `want_control` request ancillary data to be returned.
4167    /// + request `flags` flags for the receive request.
4168    /// - response `addr` the message's source address information, if
4169    ///   requested.
4170    /// - response `data` the message.
4171    /// - response `control` control messages, if requested.
4172    /// - response `truncated` indicates whether or not the returned message
4173    ///   was truncated.
4174    pub fn r#recv_msg(
4175        &self,
4176        mut want_addr: bool,
4177        mut data_len: u32,
4178        mut want_control: bool,
4179        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
4180    ) -> fidl::client::QueryResponseFut<
4181        SocketRecvMsgResult,
4182        fidl::encoding::DefaultFuchsiaResourceDialect,
4183    > {
4184        SocketProxyInterface::r#recv_msg(self, want_addr, data_len, want_control, flags)
4185    }
4186
4187    /// Sends a message on the socket.
4188    ///
4189    /// + request `addr` the address to send the message to. If unset, will
4190    ///   send to the connected peer.
4191    /// + request `data` the message.
4192    /// + request `control` ancillary data.
4193    /// + request `flags` flags for the send request.
4194    pub fn r#send_msg(
4195        &self,
4196        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
4197        mut data: &[u8],
4198        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
4199        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
4200    ) -> fidl::client::QueryResponseFut<
4201        SocketSendMsgResult,
4202        fidl::encoding::DefaultFuchsiaResourceDialect,
4203    > {
4204        SocketProxyInterface::r#send_msg(self, addr, data, control, flags)
4205    }
4206
4207    /// Retrieves creation information from the socket.
4208    ///
4209    /// - response `domain` the socket's associated domain.
4210    /// - response `proto` the socket's associated protocol.
4211    pub fn r#get_info(
4212        &self,
4213    ) -> fidl::client::QueryResponseFut<
4214        SocketGetInfoResult,
4215        fidl::encoding::DefaultFuchsiaResourceDialect,
4216    > {
4217        SocketProxyInterface::r#get_info(self)
4218    }
4219
4220    /// Set `SOL_IP` -> `IP_HDRINCL`.
4221    pub fn r#set_ip_header_included(
4222        &self,
4223        mut value: bool,
4224    ) -> fidl::client::QueryResponseFut<
4225        SocketSetIpHeaderIncludedResult,
4226        fidl::encoding::DefaultFuchsiaResourceDialect,
4227    > {
4228        SocketProxyInterface::r#set_ip_header_included(self, value)
4229    }
4230
4231    /// Get `SOL_IP` -> `IP_HDRINCL`.
4232    pub fn r#get_ip_header_included(
4233        &self,
4234    ) -> fidl::client::QueryResponseFut<
4235        SocketGetIpHeaderIncludedResult,
4236        fidl::encoding::DefaultFuchsiaResourceDialect,
4237    > {
4238        SocketProxyInterface::r#get_ip_header_included(self)
4239    }
4240
4241    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
4242    pub fn r#set_icmpv6_filter(
4243        &self,
4244        mut filter: &Icmpv6Filter,
4245    ) -> fidl::client::QueryResponseFut<
4246        SocketSetIcmpv6FilterResult,
4247        fidl::encoding::DefaultFuchsiaResourceDialect,
4248    > {
4249        SocketProxyInterface::r#set_icmpv6_filter(self, filter)
4250    }
4251
4252    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
4253    pub fn r#get_icmpv6_filter(
4254        &self,
4255    ) -> fidl::client::QueryResponseFut<
4256        SocketGetIcmpv6FilterResult,
4257        fidl::encoding::DefaultFuchsiaResourceDialect,
4258    > {
4259        SocketProxyInterface::r#get_icmpv6_filter(self)
4260    }
4261
4262    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
4263    pub fn r#set_ipv6_checksum(
4264        &self,
4265        mut config: &Ipv6ChecksumConfiguration,
4266    ) -> fidl::client::QueryResponseFut<
4267        SocketSetIpv6ChecksumResult,
4268        fidl::encoding::DefaultFuchsiaResourceDialect,
4269    > {
4270        SocketProxyInterface::r#set_ipv6_checksum(self, config)
4271    }
4272
4273    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
4274    pub fn r#get_ipv6_checksum(
4275        &self,
4276    ) -> fidl::client::QueryResponseFut<
4277        SocketGetIpv6ChecksumResult,
4278        fidl::encoding::DefaultFuchsiaResourceDialect,
4279    > {
4280        SocketProxyInterface::r#get_ipv6_checksum(self)
4281    }
4282}
4283
4284impl SocketProxyInterface for SocketProxy {
4285    fn r#clone(
4286        &self,
4287        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
4288    ) -> Result<(), fidl::Error> {
4289        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
4290            (request,),
4291            0x20d8a7aba2168a79,
4292            fidl::encoding::DynamicFlags::empty(),
4293        )
4294    }
4295
4296    type CloseResponseFut = fidl::client::QueryResponseFut<
4297        fidl_fuchsia_unknown::CloseableCloseResult,
4298        fidl::encoding::DefaultFuchsiaResourceDialect,
4299    >;
4300    fn r#close(&self) -> Self::CloseResponseFut {
4301        fn _decode(
4302            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4303        ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
4304            let _response = fidl::client::decode_transaction_body::<
4305                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
4306                fidl::encoding::DefaultFuchsiaResourceDialect,
4307                0x5ac5d459ad7f657e,
4308            >(_buf?)?;
4309            Ok(_response.map(|x| x))
4310        }
4311        self.client.send_query_and_decode::<
4312            fidl::encoding::EmptyPayload,
4313            fidl_fuchsia_unknown::CloseableCloseResult,
4314        >(
4315            (),
4316            0x5ac5d459ad7f657e,
4317            fidl::encoding::DynamicFlags::empty(),
4318            _decode,
4319        )
4320    }
4321
4322    type QueryResponseFut =
4323        fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
4324    fn r#query(&self) -> Self::QueryResponseFut {
4325        fn _decode(
4326            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4327        ) -> Result<Vec<u8>, fidl::Error> {
4328            let _response = fidl::client::decode_transaction_body::<
4329                fidl_fuchsia_unknown::QueryableQueryResponse,
4330                fidl::encoding::DefaultFuchsiaResourceDialect,
4331                0x2658edee9decfc06,
4332            >(_buf?)?;
4333            Ok(_response.protocol)
4334        }
4335        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<u8>>(
4336            (),
4337            0x2658edee9decfc06,
4338            fidl::encoding::DynamicFlags::empty(),
4339            _decode,
4340        )
4341    }
4342
4343    type SetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4344        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4345        fidl::encoding::DefaultFuchsiaResourceDialect,
4346    >;
4347    fn r#set_reuse_address(&self, mut value: bool) -> Self::SetReuseAddressResponseFut {
4348        fn _decode(
4349            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4350        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error>
4351        {
4352            let _response = fidl::client::decode_transaction_body::<
4353                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4354                fidl::encoding::DefaultFuchsiaResourceDialect,
4355                0x1fd74ee8b9a4a876,
4356            >(_buf?)?;
4357            Ok(_response.map(|x| x))
4358        }
4359        self.client.send_query_and_decode::<
4360            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
4361            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4362        >(
4363            (value,),
4364            0x1fd74ee8b9a4a876,
4365            fidl::encoding::DynamicFlags::empty(),
4366            _decode,
4367        )
4368    }
4369
4370    type GetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4371        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4372        fidl::encoding::DefaultFuchsiaResourceDialect,
4373    >;
4374    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut {
4375        fn _decode(
4376            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4377        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error>
4378        {
4379            let _response = fidl::client::decode_transaction_body::<
4380                fidl::encoding::ResultType<
4381                    fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
4382                    fidl_fuchsia_posix::Errno,
4383                >,
4384                fidl::encoding::DefaultFuchsiaResourceDialect,
4385                0x67b7206b8d1bc0a5,
4386            >(_buf?)?;
4387            Ok(_response.map(|x| x.value))
4388        }
4389        self.client.send_query_and_decode::<
4390            fidl::encoding::EmptyPayload,
4391            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4392        >(
4393            (),
4394            0x67b7206b8d1bc0a5,
4395            fidl::encoding::DynamicFlags::empty(),
4396            _decode,
4397        )
4398    }
4399
4400    type GetErrorResponseFut = fidl::client::QueryResponseFut<
4401        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4402        fidl::encoding::DefaultFuchsiaResourceDialect,
4403    >;
4404    fn r#get_error(&self) -> Self::GetErrorResponseFut {
4405        fn _decode(
4406            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4407        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
4408            let _response = fidl::client::decode_transaction_body::<
4409                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4410                fidl::encoding::DefaultFuchsiaResourceDialect,
4411                0x5aad39b33e5f6ebb,
4412            >(_buf?)?;
4413            Ok(_response.map(|x| x))
4414        }
4415        self.client.send_query_and_decode::<
4416            fidl::encoding::EmptyPayload,
4417            fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4418        >(
4419            (),
4420            0x5aad39b33e5f6ebb,
4421            fidl::encoding::DynamicFlags::empty(),
4422            _decode,
4423        )
4424    }
4425
4426    type SetBroadcastResponseFut = fidl::client::QueryResponseFut<
4427        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4428        fidl::encoding::DefaultFuchsiaResourceDialect,
4429    >;
4430    fn r#set_broadcast(&self, mut value: bool) -> Self::SetBroadcastResponseFut {
4431        fn _decode(
4432            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4433        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
4434            let _response = fidl::client::decode_transaction_body::<
4435                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4436                fidl::encoding::DefaultFuchsiaResourceDialect,
4437                0x6023e081ce3cd947,
4438            >(_buf?)?;
4439            Ok(_response.map(|x| x))
4440        }
4441        self.client.send_query_and_decode::<
4442            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
4443            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4444        >(
4445            (value,),
4446            0x6023e081ce3cd947,
4447            fidl::encoding::DynamicFlags::empty(),
4448            _decode,
4449        )
4450    }
4451
4452    type GetBroadcastResponseFut = fidl::client::QueryResponseFut<
4453        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4454        fidl::encoding::DefaultFuchsiaResourceDialect,
4455    >;
4456    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut {
4457        fn _decode(
4458            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4459        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
4460            let _response = fidl::client::decode_transaction_body::<
4461                fidl::encoding::ResultType<
4462                    fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
4463                    fidl_fuchsia_posix::Errno,
4464                >,
4465                fidl::encoding::DefaultFuchsiaResourceDialect,
4466                0x68796fc556f9780d,
4467            >(_buf?)?;
4468            Ok(_response.map(|x| x.value))
4469        }
4470        self.client.send_query_and_decode::<
4471            fidl::encoding::EmptyPayload,
4472            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4473        >(
4474            (),
4475            0x68796fc556f9780d,
4476            fidl::encoding::DynamicFlags::empty(),
4477            _decode,
4478        )
4479    }
4480
4481    type SetSendBufferResponseFut = fidl::client::QueryResponseFut<
4482        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4483        fidl::encoding::DefaultFuchsiaResourceDialect,
4484    >;
4485    fn r#set_send_buffer(&self, mut value_bytes: u64) -> Self::SetSendBufferResponseFut {
4486        fn _decode(
4487            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4488        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
4489            let _response = fidl::client::decode_transaction_body::<
4490                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4491                fidl::encoding::DefaultFuchsiaResourceDialect,
4492                0x756eac32d73a7a70,
4493            >(_buf?)?;
4494            Ok(_response.map(|x| x))
4495        }
4496        self.client.send_query_and_decode::<
4497            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
4498            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4499        >(
4500            (value_bytes,),
4501            0x756eac32d73a7a70,
4502            fidl::encoding::DynamicFlags::empty(),
4503            _decode,
4504        )
4505    }
4506
4507    type GetSendBufferResponseFut = fidl::client::QueryResponseFut<
4508        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4509        fidl::encoding::DefaultFuchsiaResourceDialect,
4510    >;
4511    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut {
4512        fn _decode(
4513            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4514        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
4515            let _response = fidl::client::decode_transaction_body::<
4516                fidl::encoding::ResultType<
4517                    fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
4518                    fidl_fuchsia_posix::Errno,
4519                >,
4520                fidl::encoding::DefaultFuchsiaResourceDialect,
4521                0x78a52fd9c7b2410b,
4522            >(_buf?)?;
4523            Ok(_response.map(|x| x.value_bytes))
4524        }
4525        self.client.send_query_and_decode::<
4526            fidl::encoding::EmptyPayload,
4527            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4528        >(
4529            (),
4530            0x78a52fd9c7b2410b,
4531            fidl::encoding::DynamicFlags::empty(),
4532            _decode,
4533        )
4534    }
4535
4536    type SetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4537        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4538        fidl::encoding::DefaultFuchsiaResourceDialect,
4539    >;
4540    fn r#set_receive_buffer(&self, mut value_bytes: u64) -> Self::SetReceiveBufferResponseFut {
4541        fn _decode(
4542            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4543        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error>
4544        {
4545            let _response = fidl::client::decode_transaction_body::<
4546                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4547                fidl::encoding::DefaultFuchsiaResourceDialect,
4548                0x6b0cf2f1919c7001,
4549            >(_buf?)?;
4550            Ok(_response.map(|x| x))
4551        }
4552        self.client.send_query_and_decode::<
4553            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
4554            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4555        >(
4556            (value_bytes,),
4557            0x6b0cf2f1919c7001,
4558            fidl::encoding::DynamicFlags::empty(),
4559            _decode,
4560        )
4561    }
4562
4563    type GetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4564        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4565        fidl::encoding::DefaultFuchsiaResourceDialect,
4566    >;
4567    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut {
4568        fn _decode(
4569            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4570        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error>
4571        {
4572            let _response = fidl::client::decode_transaction_body::<
4573                fidl::encoding::ResultType<
4574                    fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
4575                    fidl_fuchsia_posix::Errno,
4576                >,
4577                fidl::encoding::DefaultFuchsiaResourceDialect,
4578                0x14c1a4b64f709e5c,
4579            >(_buf?)?;
4580            Ok(_response.map(|x| x.value_bytes))
4581        }
4582        self.client.send_query_and_decode::<
4583            fidl::encoding::EmptyPayload,
4584            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4585        >(
4586            (),
4587            0x14c1a4b64f709e5c,
4588            fidl::encoding::DynamicFlags::empty(),
4589            _decode,
4590        )
4591    }
4592
4593    type SetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4594        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4595        fidl::encoding::DefaultFuchsiaResourceDialect,
4596    >;
4597    fn r#set_keep_alive(&self, mut value: bool) -> Self::SetKeepAliveResponseFut {
4598        fn _decode(
4599            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4600        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
4601            let _response = fidl::client::decode_transaction_body::<
4602                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4603                fidl::encoding::DefaultFuchsiaResourceDialect,
4604                0x572df8f0b920d2c7,
4605            >(_buf?)?;
4606            Ok(_response.map(|x| x))
4607        }
4608        self.client.send_query_and_decode::<
4609            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
4610            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4611        >(
4612            (value,),
4613            0x572df8f0b920d2c7,
4614            fidl::encoding::DynamicFlags::empty(),
4615            _decode,
4616        )
4617    }
4618
4619    type GetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4620        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4621        fidl::encoding::DefaultFuchsiaResourceDialect,
4622    >;
4623    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut {
4624        fn _decode(
4625            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4626        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
4627            let _response = fidl::client::decode_transaction_body::<
4628                fidl::encoding::ResultType<
4629                    fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
4630                    fidl_fuchsia_posix::Errno,
4631                >,
4632                fidl::encoding::DefaultFuchsiaResourceDialect,
4633                0x2dd29d3215f2c9d2,
4634            >(_buf?)?;
4635            Ok(_response.map(|x| x.value))
4636        }
4637        self.client.send_query_and_decode::<
4638            fidl::encoding::EmptyPayload,
4639            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4640        >(
4641            (),
4642            0x2dd29d3215f2c9d2,
4643            fidl::encoding::DynamicFlags::empty(),
4644            _decode,
4645        )
4646    }
4647
4648    type SetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4649        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4650        fidl::encoding::DefaultFuchsiaResourceDialect,
4651    >;
4652    fn r#set_out_of_band_inline(&self, mut value: bool) -> Self::SetOutOfBandInlineResponseFut {
4653        fn _decode(
4654            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4655        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error>
4656        {
4657            let _response = fidl::client::decode_transaction_body::<
4658                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4659                fidl::encoding::DefaultFuchsiaResourceDialect,
4660                0x3ecb49968bee439,
4661            >(_buf?)?;
4662            Ok(_response.map(|x| x))
4663        }
4664        self.client.send_query_and_decode::<
4665            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
4666            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4667        >(
4668            (value,),
4669            0x3ecb49968bee439,
4670            fidl::encoding::DynamicFlags::empty(),
4671            _decode,
4672        )
4673    }
4674
4675    type GetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4676        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4677        fidl::encoding::DefaultFuchsiaResourceDialect,
4678    >;
4679    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut {
4680        fn _decode(
4681            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4682        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error>
4683        {
4684            let _response = fidl::client::decode_transaction_body::<
4685                fidl::encoding::ResultType<
4686                    fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
4687                    fidl_fuchsia_posix::Errno,
4688                >,
4689                fidl::encoding::DefaultFuchsiaResourceDialect,
4690                0x348c1ab3aeca1745,
4691            >(_buf?)?;
4692            Ok(_response.map(|x| x.value))
4693        }
4694        self.client.send_query_and_decode::<
4695            fidl::encoding::EmptyPayload,
4696            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4697        >(
4698            (),
4699            0x348c1ab3aeca1745,
4700            fidl::encoding::DynamicFlags::empty(),
4701            _decode,
4702        )
4703    }
4704
4705    type SetNoCheckResponseFut = fidl::client::QueryResponseFut<
4706        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4707        fidl::encoding::DefaultFuchsiaResourceDialect,
4708    >;
4709    fn r#set_no_check(&self, mut value: bool) -> Self::SetNoCheckResponseFut {
4710        fn _decode(
4711            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4712        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
4713            let _response = fidl::client::decode_transaction_body::<
4714                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4715                fidl::encoding::DefaultFuchsiaResourceDialect,
4716                0x6bbf00c53a4c78c2,
4717            >(_buf?)?;
4718            Ok(_response.map(|x| x))
4719        }
4720        self.client.send_query_and_decode::<
4721            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
4722            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4723        >(
4724            (value,),
4725            0x6bbf00c53a4c78c2,
4726            fidl::encoding::DynamicFlags::empty(),
4727            _decode,
4728        )
4729    }
4730
4731    type GetNoCheckResponseFut = fidl::client::QueryResponseFut<
4732        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4733        fidl::encoding::DefaultFuchsiaResourceDialect,
4734    >;
4735    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut {
4736        fn _decode(
4737            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4738        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
4739            let _response = fidl::client::decode_transaction_body::<
4740                fidl::encoding::ResultType<
4741                    fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
4742                    fidl_fuchsia_posix::Errno,
4743                >,
4744                fidl::encoding::DefaultFuchsiaResourceDialect,
4745                0x2cd4249286417694,
4746            >(_buf?)?;
4747            Ok(_response.map(|x| x.value))
4748        }
4749        self.client.send_query_and_decode::<
4750            fidl::encoding::EmptyPayload,
4751            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4752        >(
4753            (),
4754            0x2cd4249286417694,
4755            fidl::encoding::DynamicFlags::empty(),
4756            _decode,
4757        )
4758    }
4759
4760    type SetLingerResponseFut = fidl::client::QueryResponseFut<
4761        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4762        fidl::encoding::DefaultFuchsiaResourceDialect,
4763    >;
4764    fn r#set_linger(&self, mut linger: bool, mut length_secs: u32) -> Self::SetLingerResponseFut {
4765        fn _decode(
4766            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4767        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
4768            let _response = fidl::client::decode_transaction_body::<
4769                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4770                fidl::encoding::DefaultFuchsiaResourceDialect,
4771                0x45386351246e998e,
4772            >(_buf?)?;
4773            Ok(_response.map(|x| x))
4774        }
4775        self.client.send_query_and_decode::<
4776            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
4777            fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4778        >(
4779            (linger, length_secs,),
4780            0x45386351246e998e,
4781            fidl::encoding::DynamicFlags::empty(),
4782            _decode,
4783        )
4784    }
4785
4786    type GetLingerResponseFut = fidl::client::QueryResponseFut<
4787        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4788        fidl::encoding::DefaultFuchsiaResourceDialect,
4789    >;
4790    fn r#get_linger(&self) -> Self::GetLingerResponseFut {
4791        fn _decode(
4792            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4793        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
4794            let _response = fidl::client::decode_transaction_body::<
4795                fidl::encoding::ResultType<
4796                    fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
4797                    fidl_fuchsia_posix::Errno,
4798                >,
4799                fidl::encoding::DefaultFuchsiaResourceDialect,
4800                0x48eb20fc5ccb0e45,
4801            >(_buf?)?;
4802            Ok(_response.map(|x| (x.linger, x.length_secs)))
4803        }
4804        self.client.send_query_and_decode::<
4805            fidl::encoding::EmptyPayload,
4806            fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4807        >(
4808            (),
4809            0x48eb20fc5ccb0e45,
4810            fidl::encoding::DynamicFlags::empty(),
4811            _decode,
4812        )
4813    }
4814
4815    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4816        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4817        fidl::encoding::DefaultFuchsiaResourceDialect,
4818    >;
4819    fn r#set_reuse_port(
4820        &self,
4821        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
4822    ) -> Self::SetReusePortResponseFut {
4823        fn _decode(
4824            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4825        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4826            let _response = fidl::client::decode_transaction_body::<
4827                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4828                fidl::encoding::DefaultFuchsiaResourceDialect,
4829                0x547dc9cc0455189e,
4830            >(_buf?)?;
4831            Ok(_response.map(|x| x))
4832        }
4833        self.client.send_query_and_decode::<
4834            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4835            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4836        >(
4837            (&mut value,),
4838            0x547dc9cc0455189e,
4839            fidl::encoding::DynamicFlags::empty(),
4840            _decode,
4841        )
4842    }
4843
4844    type SetReusePortDeprecatedResponseFut = fidl::client::QueryResponseFut<
4845        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4846        fidl::encoding::DefaultFuchsiaResourceDialect,
4847    >;
4848    fn r#set_reuse_port_deprecated(
4849        &self,
4850        mut value: bool,
4851    ) -> Self::SetReusePortDeprecatedResponseFut {
4852        fn _decode(
4853            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4854        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
4855        {
4856            let _response = fidl::client::decode_transaction_body::<
4857                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4858                fidl::encoding::DefaultFuchsiaResourceDialect,
4859                0x24dd3e5cb36d9ccb,
4860            >(_buf?)?;
4861            Ok(_response.map(|x| x))
4862        }
4863        self.client.send_query_and_decode::<
4864            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
4865            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4866        >(
4867            (value,),
4868            0x24dd3e5cb36d9ccb,
4869            fidl::encoding::DynamicFlags::empty(),
4870            _decode,
4871        )
4872    }
4873
4874    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4875        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4876        fidl::encoding::DefaultFuchsiaResourceDialect,
4877    >;
4878    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4879        fn _decode(
4880            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4881        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4882            let _response = fidl::client::decode_transaction_body::<
4883                fidl::encoding::ResultType<
4884                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4885                    fidl_fuchsia_posix::Errno,
4886                >,
4887                fidl::encoding::DefaultFuchsiaResourceDialect,
4888                0x7a112c1ab54ff828,
4889            >(_buf?)?;
4890            Ok(_response.map(|x| x.value))
4891        }
4892        self.client.send_query_and_decode::<
4893            fidl::encoding::EmptyPayload,
4894            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4895        >(
4896            (),
4897            0x7a112c1ab54ff828,
4898            fidl::encoding::DynamicFlags::empty(),
4899            _decode,
4900        )
4901    }
4902
4903    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4904        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4905        fidl::encoding::DefaultFuchsiaResourceDialect,
4906    >;
4907    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4908        fn _decode(
4909            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4910        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4911            let _response = fidl::client::decode_transaction_body::<
4912                fidl::encoding::ResultType<
4913                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4914                    fidl_fuchsia_posix::Errno,
4915                >,
4916                fidl::encoding::DefaultFuchsiaResourceDialect,
4917                0x67ce6db6c2ec8966,
4918            >(_buf?)?;
4919            Ok(_response.map(|x| x.value))
4920        }
4921        self.client.send_query_and_decode::<
4922            fidl::encoding::EmptyPayload,
4923            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4924        >(
4925            (),
4926            0x67ce6db6c2ec8966,
4927            fidl::encoding::DynamicFlags::empty(),
4928            _decode,
4929        )
4930    }
4931
4932    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4933        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4934        fidl::encoding::DefaultFuchsiaResourceDialect,
4935    >;
4936    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4937        fn _decode(
4938            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4939        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4940        {
4941            let _response = fidl::client::decode_transaction_body::<
4942                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4943                fidl::encoding::DefaultFuchsiaResourceDialect,
4944                0x2118b483f28aafc4,
4945            >(_buf?)?;
4946            Ok(_response.map(|x| x))
4947        }
4948        self.client.send_query_and_decode::<
4949            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4950            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4951        >(
4952            (value,),
4953            0x2118b483f28aafc4,
4954            fidl::encoding::DynamicFlags::empty(),
4955            _decode,
4956        )
4957    }
4958
4959    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4960        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4961        fidl::encoding::DefaultFuchsiaResourceDialect,
4962    >;
4963    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4964        fn _decode(
4965            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4966        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4967        {
4968            let _response = fidl::client::decode_transaction_body::<
4969                fidl::encoding::ResultType<
4970                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4971                    fidl_fuchsia_posix::Errno,
4972                >,
4973                fidl::encoding::DefaultFuchsiaResourceDialect,
4974                0x1ab1fbf0ef7906c8,
4975            >(_buf?)?;
4976            Ok(_response.map(|x| x.value))
4977        }
4978        self.client.send_query_and_decode::<
4979            fidl::encoding::EmptyPayload,
4980            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4981        >(
4982            (),
4983            0x1ab1fbf0ef7906c8,
4984            fidl::encoding::DynamicFlags::empty(),
4985            _decode,
4986        )
4987    }
4988
4989    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4990        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4991        fidl::encoding::DefaultFuchsiaResourceDialect,
4992    >;
4993    fn r#set_bind_to_interface_index(
4994        &self,
4995        mut value: u64,
4996    ) -> Self::SetBindToInterfaceIndexResponseFut {
4997        fn _decode(
4998            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4999        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
5000        {
5001            let _response = fidl::client::decode_transaction_body::<
5002                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5003                fidl::encoding::DefaultFuchsiaResourceDialect,
5004                0x6e387a0def00821,
5005            >(_buf?)?;
5006            Ok(_response.map(|x| x))
5007        }
5008        self.client.send_query_and_decode::<
5009            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
5010            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
5011        >(
5012            (value,),
5013            0x6e387a0def00821,
5014            fidl::encoding::DynamicFlags::empty(),
5015            _decode,
5016        )
5017    }
5018
5019    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
5020        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
5021        fidl::encoding::DefaultFuchsiaResourceDialect,
5022    >;
5023    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
5024        fn _decode(
5025            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5026        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
5027        {
5028            let _response = fidl::client::decode_transaction_body::<
5029                fidl::encoding::ResultType<
5030                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
5031                    fidl_fuchsia_posix::Errno,
5032                >,
5033                fidl::encoding::DefaultFuchsiaResourceDialect,
5034                0x59c31dd3e3078295,
5035            >(_buf?)?;
5036            Ok(_response.map(|x| x.value))
5037        }
5038        self.client.send_query_and_decode::<
5039            fidl::encoding::EmptyPayload,
5040            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
5041        >(
5042            (),
5043            0x59c31dd3e3078295,
5044            fidl::encoding::DynamicFlags::empty(),
5045            _decode,
5046        )
5047    }
5048
5049    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
5050        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
5051        fidl::encoding::DefaultFuchsiaResourceDialect,
5052    >;
5053    fn r#set_timestamp(
5054        &self,
5055        mut value: fidl_fuchsia_posix_socket::TimestampOption,
5056    ) -> Self::SetTimestampResponseFut {
5057        fn _decode(
5058            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5059        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
5060            let _response = fidl::client::decode_transaction_body::<
5061                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5062                fidl::encoding::DefaultFuchsiaResourceDialect,
5063                0x285d6516c263d839,
5064            >(_buf?)?;
5065            Ok(_response.map(|x| x))
5066        }
5067        self.client.send_query_and_decode::<
5068            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
5069            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
5070        >(
5071            (value,),
5072            0x285d6516c263d839,
5073            fidl::encoding::DynamicFlags::empty(),
5074            _decode,
5075        )
5076    }
5077
5078    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
5079        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
5080        fidl::encoding::DefaultFuchsiaResourceDialect,
5081    >;
5082    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
5083        fn _decode(
5084            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5085        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
5086            let _response = fidl::client::decode_transaction_body::<
5087                fidl::encoding::ResultType<
5088                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
5089                    fidl_fuchsia_posix::Errno,
5090                >,
5091                fidl::encoding::DefaultFuchsiaResourceDialect,
5092                0x49f2fffbbcc2bd27,
5093            >(_buf?)?;
5094            Ok(_response.map(|x| x.value))
5095        }
5096        self.client.send_query_and_decode::<
5097            fidl::encoding::EmptyPayload,
5098            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
5099        >(
5100            (),
5101            0x49f2fffbbcc2bd27,
5102            fidl::encoding::DynamicFlags::empty(),
5103            _decode,
5104        )
5105    }
5106
5107    type SetMarkResponseFut = fidl::client::QueryResponseFut<
5108        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5109        fidl::encoding::DefaultFuchsiaResourceDialect,
5110    >;
5111    fn r#set_mark(
5112        &self,
5113        mut domain: fidl_fuchsia_net::MarkDomain,
5114        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
5115    ) -> Self::SetMarkResponseFut {
5116        fn _decode(
5117            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5118        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
5119            let _response = fidl::client::decode_transaction_body::<
5120                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5121                fidl::encoding::DefaultFuchsiaResourceDialect,
5122                0x6ead6de09f653236,
5123            >(_buf?)?;
5124            Ok(_response.map(|x| x))
5125        }
5126        self.client.send_query_and_decode::<
5127            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
5128            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5129        >(
5130            (domain, mark,),
5131            0x6ead6de09f653236,
5132            fidl::encoding::DynamicFlags::empty(),
5133            _decode,
5134        )
5135    }
5136
5137    type GetMarkResponseFut = fidl::client::QueryResponseFut<
5138        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5139        fidl::encoding::DefaultFuchsiaResourceDialect,
5140    >;
5141    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
5142        fn _decode(
5143            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5144        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
5145            let _response = fidl::client::decode_transaction_body::<
5146                fidl::encoding::ResultType<
5147                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
5148                    fidl_fuchsia_posix::Errno,
5149                >,
5150                fidl::encoding::DefaultFuchsiaResourceDialect,
5151                0x57a2752c61d93d47,
5152            >(_buf?)?;
5153            Ok(_response.map(|x| x.mark))
5154        }
5155        self.client.send_query_and_decode::<
5156            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
5157            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5158        >(
5159            (domain,),
5160            0x57a2752c61d93d47,
5161            fidl::encoding::DynamicFlags::empty(),
5162            _decode,
5163        )
5164    }
5165
5166    type GetCookieResponseFut = fidl::client::QueryResponseFut<
5167        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5168        fidl::encoding::DefaultFuchsiaResourceDialect,
5169    >;
5170    fn r#get_cookie(&self) -> Self::GetCookieResponseFut {
5171        fn _decode(
5172            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5173        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
5174            let _response = fidl::client::decode_transaction_body::<
5175                fidl::encoding::ResultType<
5176                    fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
5177                    fidl_fuchsia_posix::Errno,
5178                >,
5179                fidl::encoding::DefaultFuchsiaResourceDialect,
5180                0x2c2f47fd8f924e52,
5181            >(_buf?)?;
5182            Ok(_response.map(|x| x.value))
5183        }
5184        self.client.send_query_and_decode::<
5185            fidl::encoding::EmptyPayload,
5186            fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5187        >(
5188            (),
5189            0x2c2f47fd8f924e52,
5190            fidl::encoding::DynamicFlags::empty(),
5191            _decode,
5192        )
5193    }
5194
5195    type BindResponseFut = fidl::client::QueryResponseFut<
5196        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5197        fidl::encoding::DefaultFuchsiaResourceDialect,
5198    >;
5199    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5200        fn _decode(
5201            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5202        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5203            let _response = fidl::client::decode_transaction_body::<
5204                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5205                fidl::encoding::DefaultFuchsiaResourceDialect,
5206                0x4bc6400ae92125d,
5207            >(_buf?)?;
5208            Ok(_response.map(|x| x))
5209        }
5210        self.client.send_query_and_decode::<
5211            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5212            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5213        >(
5214            (addr,),
5215            0x4bc6400ae92125d,
5216            fidl::encoding::DynamicFlags::empty(),
5217            _decode,
5218        )
5219    }
5220
5221    type ConnectResponseFut = fidl::client::QueryResponseFut<
5222        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5223        fidl::encoding::DefaultFuchsiaResourceDialect,
5224    >;
5225    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5226        fn _decode(
5227            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5228        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5229        {
5230            let _response = fidl::client::decode_transaction_body::<
5231                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5232                fidl::encoding::DefaultFuchsiaResourceDialect,
5233                0x5f05f19bfdd38871,
5234            >(_buf?)?;
5235            Ok(_response.map(|x| x))
5236        }
5237        self.client.send_query_and_decode::<
5238            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5239            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5240        >(
5241            (addr,),
5242            0x5f05f19bfdd38871,
5243            fidl::encoding::DynamicFlags::empty(),
5244            _decode,
5245        )
5246    }
5247
5248    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5249        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5250        fidl::encoding::DefaultFuchsiaResourceDialect,
5251    >;
5252    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5253        fn _decode(
5254            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5255        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5256        {
5257            let _response = fidl::client::decode_transaction_body::<
5258                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5259                fidl::encoding::DefaultFuchsiaResourceDialect,
5260                0x74e63b91f7b29b2,
5261            >(_buf?)?;
5262            Ok(_response.map(|x| x))
5263        }
5264        self.client.send_query_and_decode::<
5265            fidl::encoding::EmptyPayload,
5266            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5267        >(
5268            (),
5269            0x74e63b91f7b29b2,
5270            fidl::encoding::DynamicFlags::empty(),
5271            _decode,
5272        )
5273    }
5274
5275    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5276        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5277        fidl::encoding::DefaultFuchsiaResourceDialect,
5278    >;
5279    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5280        fn _decode(
5281            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5282        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5283        {
5284            let _response = fidl::client::decode_transaction_body::<
5285                fidl::encoding::ResultType<
5286                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5287                    fidl_fuchsia_posix::Errno,
5288                >,
5289                fidl::encoding::DefaultFuchsiaResourceDialect,
5290                0x475f23f84a1a4f85,
5291            >(_buf?)?;
5292            Ok(_response.map(|x| x.addr))
5293        }
5294        self.client.send_query_and_decode::<
5295            fidl::encoding::EmptyPayload,
5296            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5297        >(
5298            (),
5299            0x475f23f84a1a4f85,
5300            fidl::encoding::DynamicFlags::empty(),
5301            _decode,
5302        )
5303    }
5304
5305    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5306        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5307        fidl::encoding::DefaultFuchsiaResourceDialect,
5308    >;
5309    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5310        fn _decode(
5311            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5312        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5313        {
5314            let _response = fidl::client::decode_transaction_body::<
5315                fidl::encoding::ResultType<
5316                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5317                    fidl_fuchsia_posix::Errno,
5318                >,
5319                fidl::encoding::DefaultFuchsiaResourceDialect,
5320                0x1ffecf4bd5b6432e,
5321            >(_buf?)?;
5322            Ok(_response.map(|x| x.addr))
5323        }
5324        self.client.send_query_and_decode::<
5325            fidl::encoding::EmptyPayload,
5326            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5327        >(
5328            (),
5329            0x1ffecf4bd5b6432e,
5330            fidl::encoding::DynamicFlags::empty(),
5331            _decode,
5332        )
5333    }
5334
5335    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5336        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5337        fidl::encoding::DefaultFuchsiaResourceDialect,
5338    >;
5339    fn r#shutdown(
5340        &self,
5341        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5342    ) -> Self::ShutdownResponseFut {
5343        fn _decode(
5344            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5345        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5346        {
5347            let _response = fidl::client::decode_transaction_body::<
5348                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5349                fidl::encoding::DefaultFuchsiaResourceDialect,
5350                0x247f38b6db68c336,
5351            >(_buf?)?;
5352            Ok(_response.map(|x| x))
5353        }
5354        self.client.send_query_and_decode::<
5355            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5356            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5357        >(
5358            (mode,),
5359            0x247f38b6db68c336,
5360            fidl::encoding::DynamicFlags::empty(),
5361            _decode,
5362        )
5363    }
5364
5365    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5366        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5367        fidl::encoding::DefaultFuchsiaResourceDialect,
5368    >;
5369    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5370        fn _decode(
5371            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5372        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5373        {
5374            let _response = fidl::client::decode_transaction_body::<
5375                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5376                fidl::encoding::DefaultFuchsiaResourceDialect,
5377                0x995c600475b6d46,
5378            >(_buf?)?;
5379            Ok(_response.map(|x| x))
5380        }
5381        self.client.send_query_and_decode::<
5382            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5383            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5384        >(
5385            (value,),
5386            0x995c600475b6d46,
5387            fidl::encoding::DynamicFlags::empty(),
5388            _decode,
5389        )
5390    }
5391
5392    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5393        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5394        fidl::encoding::DefaultFuchsiaResourceDialect,
5395    >;
5396    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5397        fn _decode(
5398            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5399        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5400        {
5401            let _response = fidl::client::decode_transaction_body::<
5402                fidl::encoding::ResultType<
5403                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5404                    fidl_fuchsia_posix::Errno,
5405                >,
5406                fidl::encoding::DefaultFuchsiaResourceDialect,
5407                0x3814a04259f75fcb,
5408            >(_buf?)?;
5409            Ok(_response.map(|x| x.value))
5410        }
5411        self.client.send_query_and_decode::<
5412            fidl::encoding::EmptyPayload,
5413            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5414        >(
5415            (),
5416            0x3814a04259f75fcb,
5417            fidl::encoding::DynamicFlags::empty(),
5418            _decode,
5419        )
5420    }
5421
5422    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5423        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5424        fidl::encoding::DefaultFuchsiaResourceDialect,
5425    >;
5426    fn r#set_ip_ttl(
5427        &self,
5428        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5429    ) -> Self::SetIpTtlResponseFut {
5430        fn _decode(
5431            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5432        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5433        {
5434            let _response = fidl::client::decode_transaction_body::<
5435                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5436                fidl::encoding::DefaultFuchsiaResourceDialect,
5437                0x29e2424b433ae1ef,
5438            >(_buf?)?;
5439            Ok(_response.map(|x| x))
5440        }
5441        self.client.send_query_and_decode::<
5442            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5443            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5444        >(
5445            (value,),
5446            0x29e2424b433ae1ef,
5447            fidl::encoding::DynamicFlags::empty(),
5448            _decode,
5449        )
5450    }
5451
5452    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5453        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5454        fidl::encoding::DefaultFuchsiaResourceDialect,
5455    >;
5456    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5457        fn _decode(
5458            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5459        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5460        {
5461            let _response = fidl::client::decode_transaction_body::<
5462                fidl::encoding::ResultType<
5463                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5464                    fidl_fuchsia_posix::Errno,
5465                >,
5466                fidl::encoding::DefaultFuchsiaResourceDialect,
5467                0x47e47fa1f24da471,
5468            >(_buf?)?;
5469            Ok(_response.map(|x| x.value))
5470        }
5471        self.client.send_query_and_decode::<
5472            fidl::encoding::EmptyPayload,
5473            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5474        >(
5475            (),
5476            0x47e47fa1f24da471,
5477            fidl::encoding::DynamicFlags::empty(),
5478            _decode,
5479        )
5480    }
5481
5482    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5483        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5484        fidl::encoding::DefaultFuchsiaResourceDialect,
5485    >;
5486    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5487        fn _decode(
5488            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5489        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5490        {
5491            let _response = fidl::client::decode_transaction_body::<
5492                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5493                fidl::encoding::DefaultFuchsiaResourceDialect,
5494                0x392d16bee20c0e16,
5495            >(_buf?)?;
5496            Ok(_response.map(|x| x))
5497        }
5498        self.client.send_query_and_decode::<
5499            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5500            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5501        >(
5502            (value,),
5503            0x392d16bee20c0e16,
5504            fidl::encoding::DynamicFlags::empty(),
5505            _decode,
5506        )
5507    }
5508
5509    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5510        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5511        fidl::encoding::DefaultFuchsiaResourceDialect,
5512    >;
5513    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5514        fn _decode(
5515            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5516        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5517        {
5518            let _response = fidl::client::decode_transaction_body::<
5519                fidl::encoding::ResultType<
5520                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5521                    fidl_fuchsia_posix::Errno,
5522                >,
5523                fidl::encoding::DefaultFuchsiaResourceDialect,
5524                0x54b505f242280740,
5525            >(_buf?)?;
5526            Ok(_response.map(|x| x.value))
5527        }
5528        self.client.send_query_and_decode::<
5529            fidl::encoding::EmptyPayload,
5530            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5531        >(
5532            (),
5533            0x54b505f242280740,
5534            fidl::encoding::DynamicFlags::empty(),
5535            _decode,
5536        )
5537    }
5538
5539    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5540        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5541        fidl::encoding::DefaultFuchsiaResourceDialect,
5542    >;
5543    fn r#set_ip_receive_type_of_service(
5544        &self,
5545        mut value: bool,
5546    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5547        fn _decode(
5548            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5549        ) -> Result<
5550            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5551            fidl::Error,
5552        > {
5553            let _response = fidl::client::decode_transaction_body::<
5554                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5555                fidl::encoding::DefaultFuchsiaResourceDialect,
5556                0x6c4f6714995f84ef,
5557            >(_buf?)?;
5558            Ok(_response.map(|x| x))
5559        }
5560        self.client.send_query_and_decode::<
5561            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5562            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5563        >(
5564            (value,),
5565            0x6c4f6714995f84ef,
5566            fidl::encoding::DynamicFlags::empty(),
5567            _decode,
5568        )
5569    }
5570
5571    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5572        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5573        fidl::encoding::DefaultFuchsiaResourceDialect,
5574    >;
5575    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5576        fn _decode(
5577            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5578        ) -> Result<
5579            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5580            fidl::Error,
5581        > {
5582            let _response = fidl::client::decode_transaction_body::<
5583                fidl::encoding::ResultType<
5584                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5585                    fidl_fuchsia_posix::Errno,
5586                >,
5587                fidl::encoding::DefaultFuchsiaResourceDialect,
5588                0x4158ba7dc2795960,
5589            >(_buf?)?;
5590            Ok(_response.map(|x| x.value))
5591        }
5592        self.client.send_query_and_decode::<
5593            fidl::encoding::EmptyPayload,
5594            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5595        >(
5596            (),
5597            0x4158ba7dc2795960,
5598            fidl::encoding::DynamicFlags::empty(),
5599            _decode,
5600        )
5601    }
5602
5603    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5604        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5605        fidl::encoding::DefaultFuchsiaResourceDialect,
5606    >;
5607    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5608        fn _decode(
5609            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5610        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5611        {
5612            let _response = fidl::client::decode_transaction_body::<
5613                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5614                fidl::encoding::DefaultFuchsiaResourceDialect,
5615                0x46f15be0ce0ab82b,
5616            >(_buf?)?;
5617            Ok(_response.map(|x| x))
5618        }
5619        self.client.send_query_and_decode::<
5620            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5621            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5622        >(
5623            (value,),
5624            0x46f15be0ce0ab82b,
5625            fidl::encoding::DynamicFlags::empty(),
5626            _decode,
5627        )
5628    }
5629
5630    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5631        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5632        fidl::encoding::DefaultFuchsiaResourceDialect,
5633    >;
5634    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5635        fn _decode(
5636            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5637        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5638        {
5639            let _response = fidl::client::decode_transaction_body::<
5640                fidl::encoding::ResultType<
5641                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5642                    fidl_fuchsia_posix::Errno,
5643                >,
5644                fidl::encoding::DefaultFuchsiaResourceDialect,
5645                0x678ddd5a5dfa2eb5,
5646            >(_buf?)?;
5647            Ok(_response.map(|x| x.value))
5648        }
5649        self.client.send_query_and_decode::<
5650            fidl::encoding::EmptyPayload,
5651            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5652        >(
5653            (),
5654            0x678ddd5a5dfa2eb5,
5655            fidl::encoding::DynamicFlags::empty(),
5656            _decode,
5657        )
5658    }
5659
5660    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5661        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5662        fidl::encoding::DefaultFuchsiaResourceDialect,
5663    >;
5664    fn r#set_ip_multicast_interface(
5665        &self,
5666        mut iface: u64,
5667        mut address: &fidl_fuchsia_net::Ipv4Address,
5668    ) -> Self::SetIpMulticastInterfaceResponseFut {
5669        fn _decode(
5670            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5671        ) -> Result<
5672            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5673            fidl::Error,
5674        > {
5675            let _response = fidl::client::decode_transaction_body::<
5676                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5677                fidl::encoding::DefaultFuchsiaResourceDialect,
5678                0x752fbfa9b12befe,
5679            >(_buf?)?;
5680            Ok(_response.map(|x| x))
5681        }
5682        self.client.send_query_and_decode::<
5683            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5684            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5685        >(
5686            (iface, address,),
5687            0x752fbfa9b12befe,
5688            fidl::encoding::DynamicFlags::empty(),
5689            _decode,
5690        )
5691    }
5692
5693    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5694        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5695        fidl::encoding::DefaultFuchsiaResourceDialect,
5696    >;
5697    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5698        fn _decode(
5699            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5700        ) -> Result<
5701            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5702            fidl::Error,
5703        > {
5704            let _response = fidl::client::decode_transaction_body::<
5705                fidl::encoding::ResultType<
5706                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5707                    fidl_fuchsia_posix::Errno,
5708                >,
5709                fidl::encoding::DefaultFuchsiaResourceDialect,
5710                0x320bd14c4df046c4,
5711            >(_buf?)?;
5712            Ok(_response.map(|x| x.value))
5713        }
5714        self.client.send_query_and_decode::<
5715            fidl::encoding::EmptyPayload,
5716            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5717        >(
5718            (),
5719            0x320bd14c4df046c4,
5720            fidl::encoding::DynamicFlags::empty(),
5721            _decode,
5722        )
5723    }
5724
5725    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5726        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5727        fidl::encoding::DefaultFuchsiaResourceDialect,
5728    >;
5729    fn r#set_ip_multicast_ttl(
5730        &self,
5731        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5732    ) -> Self::SetIpMulticastTtlResponseFut {
5733        fn _decode(
5734            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5735        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5736        {
5737            let _response = fidl::client::decode_transaction_body::<
5738                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5739                fidl::encoding::DefaultFuchsiaResourceDialect,
5740                0x63134d53772916a1,
5741            >(_buf?)?;
5742            Ok(_response.map(|x| x))
5743        }
5744        self.client.send_query_and_decode::<
5745            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5746            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5747        >(
5748            (value,),
5749            0x63134d53772916a1,
5750            fidl::encoding::DynamicFlags::empty(),
5751            _decode,
5752        )
5753    }
5754
5755    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5756        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5757        fidl::encoding::DefaultFuchsiaResourceDialect,
5758    >;
5759    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5760        fn _decode(
5761            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5762        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5763        {
5764            let _response = fidl::client::decode_transaction_body::<
5765                fidl::encoding::ResultType<
5766                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5767                    fidl_fuchsia_posix::Errno,
5768                >,
5769                fidl::encoding::DefaultFuchsiaResourceDialect,
5770                0x4665cd378f39e1a,
5771            >(_buf?)?;
5772            Ok(_response.map(|x| x.value))
5773        }
5774        self.client.send_query_and_decode::<
5775            fidl::encoding::EmptyPayload,
5776            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5777        >(
5778            (),
5779            0x4665cd378f39e1a,
5780            fidl::encoding::DynamicFlags::empty(),
5781            _decode,
5782        )
5783    }
5784
5785    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5786        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5787        fidl::encoding::DefaultFuchsiaResourceDialect,
5788    >;
5789    fn r#set_ip_multicast_loopback(
5790        &self,
5791        mut value: bool,
5792    ) -> Self::SetIpMulticastLoopbackResponseFut {
5793        fn _decode(
5794            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5795        ) -> Result<
5796            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5797            fidl::Error,
5798        > {
5799            let _response = fidl::client::decode_transaction_body::<
5800                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5801                fidl::encoding::DefaultFuchsiaResourceDialect,
5802                0x20c55c11f00943ea,
5803            >(_buf?)?;
5804            Ok(_response.map(|x| x))
5805        }
5806        self.client.send_query_and_decode::<
5807            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5808            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5809        >(
5810            (value,),
5811            0x20c55c11f00943ea,
5812            fidl::encoding::DynamicFlags::empty(),
5813            _decode,
5814        )
5815    }
5816
5817    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5818        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5819        fidl::encoding::DefaultFuchsiaResourceDialect,
5820    >;
5821    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5822        fn _decode(
5823            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5824        ) -> Result<
5825            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5826            fidl::Error,
5827        > {
5828            let _response = fidl::client::decode_transaction_body::<
5829                fidl::encoding::ResultType<
5830                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5831                    fidl_fuchsia_posix::Errno,
5832                >,
5833                fidl::encoding::DefaultFuchsiaResourceDialect,
5834                0x3b6b26ff558298f2,
5835            >(_buf?)?;
5836            Ok(_response.map(|x| x.value))
5837        }
5838        self.client.send_query_and_decode::<
5839            fidl::encoding::EmptyPayload,
5840            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5841        >(
5842            (),
5843            0x3b6b26ff558298f2,
5844            fidl::encoding::DynamicFlags::empty(),
5845            _decode,
5846        )
5847    }
5848
5849    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5850        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5851        fidl::encoding::DefaultFuchsiaResourceDialect,
5852    >;
5853    fn r#add_ip_membership(
5854        &self,
5855        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5856    ) -> Self::AddIpMembershipResponseFut {
5857        fn _decode(
5858            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5859        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5860        {
5861            let _response = fidl::client::decode_transaction_body::<
5862                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5863                fidl::encoding::DefaultFuchsiaResourceDialect,
5864                0x76bc7df115a3b4d0,
5865            >(_buf?)?;
5866            Ok(_response.map(|x| x))
5867        }
5868        self.client.send_query_and_decode::<
5869            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5870            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5871        >(
5872            (membership,),
5873            0x76bc7df115a3b4d0,
5874            fidl::encoding::DynamicFlags::empty(),
5875            _decode,
5876        )
5877    }
5878
5879    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5880        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5881        fidl::encoding::DefaultFuchsiaResourceDialect,
5882    >;
5883    fn r#drop_ip_membership(
5884        &self,
5885        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5886    ) -> Self::DropIpMembershipResponseFut {
5887        fn _decode(
5888            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5889        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5890        {
5891            let _response = fidl::client::decode_transaction_body::<
5892                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5893                fidl::encoding::DefaultFuchsiaResourceDialect,
5894                0x2888f3099188d03,
5895            >(_buf?)?;
5896            Ok(_response.map(|x| x))
5897        }
5898        self.client.send_query_and_decode::<
5899            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5900            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5901        >(
5902            (membership,),
5903            0x2888f3099188d03,
5904            fidl::encoding::DynamicFlags::empty(),
5905            _decode,
5906        )
5907    }
5908
5909    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5910        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5911        fidl::encoding::DefaultFuchsiaResourceDialect,
5912    >;
5913    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5914        fn _decode(
5915            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5916        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5917        {
5918            let _response = fidl::client::decode_transaction_body::<
5919                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5920                fidl::encoding::DefaultFuchsiaResourceDialect,
5921                0x1ae532b0c066e3a0,
5922            >(_buf?)?;
5923            Ok(_response.map(|x| x))
5924        }
5925        self.client.send_query_and_decode::<
5926            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5927            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5928        >(
5929            (value,),
5930            0x1ae532b0c066e3a0,
5931            fidl::encoding::DynamicFlags::empty(),
5932            _decode,
5933        )
5934    }
5935
5936    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5937        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5938        fidl::encoding::DefaultFuchsiaResourceDialect,
5939    >;
5940    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5941        fn _decode(
5942            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5943        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5944        {
5945            let _response = fidl::client::decode_transaction_body::<
5946                fidl::encoding::ResultType<
5947                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5948                    fidl_fuchsia_posix::Errno,
5949                >,
5950                fidl::encoding::DefaultFuchsiaResourceDialect,
5951                0x51d43695962ebfb5,
5952            >(_buf?)?;
5953            Ok(_response.map(|x| x.value))
5954        }
5955        self.client.send_query_and_decode::<
5956            fidl::encoding::EmptyPayload,
5957            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5958        >(
5959            (),
5960            0x51d43695962ebfb5,
5961            fidl::encoding::DynamicFlags::empty(),
5962            _decode,
5963        )
5964    }
5965
5966    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5967        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5968        fidl::encoding::DefaultFuchsiaResourceDialect,
5969    >;
5970    fn r#set_ip_receive_original_destination_address(
5971        &self,
5972        mut value: bool,
5973    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5974        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5975            let _response = fidl::client::decode_transaction_body::<
5976                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5977                fidl::encoding::DefaultFuchsiaResourceDialect,
5978                0x4722b4ce52f7840,
5979            >(_buf?)?;
5980            Ok(_response.map(|x| x))
5981        }
5982        self.client.send_query_and_decode::<
5983            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5984            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5985        >(
5986            (value,),
5987            0x4722b4ce52f7840,
5988            fidl::encoding::DynamicFlags::empty(),
5989            _decode,
5990        )
5991    }
5992
5993    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5994        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5995        fidl::encoding::DefaultFuchsiaResourceDialect,
5996    >;
5997    fn r#get_ip_receive_original_destination_address(
5998        &self,
5999    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
6000        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
6001            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
6002            Ok(_response.map(|x| x.value))
6003        }
6004        self.client.send_query_and_decode::<
6005            fidl::encoding::EmptyPayload,
6006            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
6007        >(
6008            (),
6009            0x2a0e7dc5d6bfdfe9,
6010            fidl::encoding::DynamicFlags::empty(),
6011            _decode,
6012        )
6013    }
6014
6015    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
6016        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
6017        fidl::encoding::DefaultFuchsiaResourceDialect,
6018    >;
6019    fn r#add_ipv6_membership(
6020        &self,
6021        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
6022    ) -> Self::AddIpv6MembershipResponseFut {
6023        fn _decode(
6024            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6025        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
6026        {
6027            let _response = fidl::client::decode_transaction_body::<
6028                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6029                fidl::encoding::DefaultFuchsiaResourceDialect,
6030                0x7c94727acb4ea4b3,
6031            >(_buf?)?;
6032            Ok(_response.map(|x| x))
6033        }
6034        self.client.send_query_and_decode::<
6035            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
6036            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
6037        >(
6038            (membership,),
6039            0x7c94727acb4ea4b3,
6040            fidl::encoding::DynamicFlags::empty(),
6041            _decode,
6042        )
6043    }
6044
6045    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
6046        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
6047        fidl::encoding::DefaultFuchsiaResourceDialect,
6048    >;
6049    fn r#drop_ipv6_membership(
6050        &self,
6051        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
6052    ) -> Self::DropIpv6MembershipResponseFut {
6053        fn _decode(
6054            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6055        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
6056        {
6057            let _response = fidl::client::decode_transaction_body::<
6058                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6059                fidl::encoding::DefaultFuchsiaResourceDialect,
6060                0x42104c70ccaba304,
6061            >(_buf?)?;
6062            Ok(_response.map(|x| x))
6063        }
6064        self.client.send_query_and_decode::<
6065            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
6066            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
6067        >(
6068            (membership,),
6069            0x42104c70ccaba304,
6070            fidl::encoding::DynamicFlags::empty(),
6071            _decode,
6072        )
6073    }
6074
6075    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
6076        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
6077        fidl::encoding::DefaultFuchsiaResourceDialect,
6078    >;
6079    fn r#set_ipv6_multicast_interface(
6080        &self,
6081        mut value: u64,
6082    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
6083        fn _decode(
6084            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6085        ) -> Result<
6086            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
6087            fidl::Error,
6088        > {
6089            let _response = fidl::client::decode_transaction_body::<
6090                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6091                fidl::encoding::DefaultFuchsiaResourceDialect,
6092                0x135f76db3774ab3b,
6093            >(_buf?)?;
6094            Ok(_response.map(|x| x))
6095        }
6096        self.client.send_query_and_decode::<
6097            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
6098            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
6099        >(
6100            (value,),
6101            0x135f76db3774ab3b,
6102            fidl::encoding::DynamicFlags::empty(),
6103            _decode,
6104        )
6105    }
6106
6107    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
6108        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6109        fidl::encoding::DefaultFuchsiaResourceDialect,
6110    >;
6111    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
6112        fn _decode(
6113            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6114        ) -> Result<
6115            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6116            fidl::Error,
6117        > {
6118            let _response = fidl::client::decode_transaction_body::<
6119                fidl::encoding::ResultType<
6120                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
6121                    fidl_fuchsia_posix::Errno,
6122                >,
6123                fidl::encoding::DefaultFuchsiaResourceDialect,
6124                0x1f26fcdd348f1882,
6125            >(_buf?)?;
6126            Ok(_response.map(|x| x.value))
6127        }
6128        self.client.send_query_and_decode::<
6129            fidl::encoding::EmptyPayload,
6130            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6131        >(
6132            (),
6133            0x1f26fcdd348f1882,
6134            fidl::encoding::DynamicFlags::empty(),
6135            _decode,
6136        )
6137    }
6138
6139    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6140        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6141        fidl::encoding::DefaultFuchsiaResourceDialect,
6142    >;
6143    fn r#set_ipv6_unicast_hops(
6144        &self,
6145        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6146    ) -> Self::SetIpv6UnicastHopsResponseFut {
6147        fn _decode(
6148            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6149        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, 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                0x157d51e98f462859,
6155            >(_buf?)?;
6156            Ok(_response.map(|x| x))
6157        }
6158        self.client.send_query_and_decode::<
6159            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
6160            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6161        >(
6162            (value,),
6163            0x157d51e98f462859,
6164            fidl::encoding::DynamicFlags::empty(),
6165            _decode,
6166        )
6167    }
6168
6169    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6170        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6171        fidl::encoding::DefaultFuchsiaResourceDialect,
6172    >;
6173    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
6174        fn _decode(
6175            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6176        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
6177        {
6178            let _response = fidl::client::decode_transaction_body::<
6179                fidl::encoding::ResultType<
6180                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
6181                    fidl_fuchsia_posix::Errno,
6182                >,
6183                fidl::encoding::DefaultFuchsiaResourceDialect,
6184                0x21f4641cad8bd8d2,
6185            >(_buf?)?;
6186            Ok(_response.map(|x| x.value))
6187        }
6188        self.client.send_query_and_decode::<
6189            fidl::encoding::EmptyPayload,
6190            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6191        >(
6192            (),
6193            0x21f4641cad8bd8d2,
6194            fidl::encoding::DynamicFlags::empty(),
6195            _decode,
6196        )
6197    }
6198
6199    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6200        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6201        fidl::encoding::DefaultFuchsiaResourceDialect,
6202    >;
6203    fn r#set_ipv6_receive_hop_limit(
6204        &self,
6205        mut value: bool,
6206    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6207        fn _decode(
6208            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6209        ) -> Result<
6210            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6211            fidl::Error,
6212        > {
6213            let _response = fidl::client::decode_transaction_body::<
6214                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6215                fidl::encoding::DefaultFuchsiaResourceDialect,
6216                0x5c24808ed2e84a1e,
6217            >(_buf?)?;
6218            Ok(_response.map(|x| x))
6219        }
6220        self.client.send_query_and_decode::<
6221            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6222            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6223        >(
6224            (value,),
6225            0x5c24808ed2e84a1e,
6226            fidl::encoding::DynamicFlags::empty(),
6227            _decode,
6228        )
6229    }
6230
6231    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6232        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6233        fidl::encoding::DefaultFuchsiaResourceDialect,
6234    >;
6235    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6236        fn _decode(
6237            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6238        ) -> Result<
6239            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6240            fidl::Error,
6241        > {
6242            let _response = fidl::client::decode_transaction_body::<
6243                fidl::encoding::ResultType<
6244                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6245                    fidl_fuchsia_posix::Errno,
6246                >,
6247                fidl::encoding::DefaultFuchsiaResourceDialect,
6248                0x341e06689885b4c0,
6249            >(_buf?)?;
6250            Ok(_response.map(|x| x.value))
6251        }
6252        self.client.send_query_and_decode::<
6253            fidl::encoding::EmptyPayload,
6254            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6255        >(
6256            (),
6257            0x341e06689885b4c0,
6258            fidl::encoding::DynamicFlags::empty(),
6259            _decode,
6260        )
6261    }
6262
6263    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6264        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6265        fidl::encoding::DefaultFuchsiaResourceDialect,
6266    >;
6267    fn r#set_ipv6_multicast_hops(
6268        &self,
6269        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6270    ) -> Self::SetIpv6MulticastHopsResponseFut {
6271        fn _decode(
6272            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6273        ) -> Result<
6274            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6275            fidl::Error,
6276        > {
6277            let _response = fidl::client::decode_transaction_body::<
6278                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6279                fidl::encoding::DefaultFuchsiaResourceDialect,
6280                0x25b9cd4d181f82c1,
6281            >(_buf?)?;
6282            Ok(_response.map(|x| x))
6283        }
6284        self.client.send_query_and_decode::<
6285            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6286            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6287        >(
6288            (value,),
6289            0x25b9cd4d181f82c1,
6290            fidl::encoding::DynamicFlags::empty(),
6291            _decode,
6292        )
6293    }
6294
6295    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6296        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6297        fidl::encoding::DefaultFuchsiaResourceDialect,
6298    >;
6299    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6300        fn _decode(
6301            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6302        ) -> Result<
6303            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6304            fidl::Error,
6305        > {
6306            let _response = fidl::client::decode_transaction_body::<
6307                fidl::encoding::ResultType<
6308                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6309                    fidl_fuchsia_posix::Errno,
6310                >,
6311                fidl::encoding::DefaultFuchsiaResourceDialect,
6312                0x52916948a365012a,
6313            >(_buf?)?;
6314            Ok(_response.map(|x| x.value))
6315        }
6316        self.client.send_query_and_decode::<
6317            fidl::encoding::EmptyPayload,
6318            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6319        >(
6320            (),
6321            0x52916948a365012a,
6322            fidl::encoding::DynamicFlags::empty(),
6323            _decode,
6324        )
6325    }
6326
6327    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6328        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6329        fidl::encoding::DefaultFuchsiaResourceDialect,
6330    >;
6331    fn r#set_ipv6_multicast_loopback(
6332        &self,
6333        mut value: bool,
6334    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6335        fn _decode(
6336            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6337        ) -> Result<
6338            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6339            fidl::Error,
6340        > {
6341            let _response = fidl::client::decode_transaction_body::<
6342                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6343                fidl::encoding::DefaultFuchsiaResourceDialect,
6344                0x55701c409ff41b40,
6345            >(_buf?)?;
6346            Ok(_response.map(|x| x))
6347        }
6348        self.client.send_query_and_decode::<
6349            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6350            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6351        >(
6352            (value,),
6353            0x55701c409ff41b40,
6354            fidl::encoding::DynamicFlags::empty(),
6355            _decode,
6356        )
6357    }
6358
6359    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6360        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6361        fidl::encoding::DefaultFuchsiaResourceDialect,
6362    >;
6363    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6364        fn _decode(
6365            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6366        ) -> Result<
6367            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6368            fidl::Error,
6369        > {
6370            let _response = fidl::client::decode_transaction_body::<
6371                fidl::encoding::ResultType<
6372                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6373                    fidl_fuchsia_posix::Errno,
6374                >,
6375                fidl::encoding::DefaultFuchsiaResourceDialect,
6376                0x4415b701fde319c3,
6377            >(_buf?)?;
6378            Ok(_response.map(|x| x.value))
6379        }
6380        self.client.send_query_and_decode::<
6381            fidl::encoding::EmptyPayload,
6382            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6383        >(
6384            (),
6385            0x4415b701fde319c3,
6386            fidl::encoding::DynamicFlags::empty(),
6387            _decode,
6388        )
6389    }
6390
6391    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6392        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6393        fidl::encoding::DefaultFuchsiaResourceDialect,
6394    >;
6395    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6396        fn _decode(
6397            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6398        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, 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                0x4873f1364758cbba,
6404            >(_buf?)?;
6405            Ok(_response.map(|x| x))
6406        }
6407        self.client.send_query_and_decode::<
6408            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6409            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6410        >(
6411            (value,),
6412            0x4873f1364758cbba,
6413            fidl::encoding::DynamicFlags::empty(),
6414            _decode,
6415        )
6416    }
6417
6418    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6419        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6420        fidl::encoding::DefaultFuchsiaResourceDialect,
6421    >;
6422    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6423        fn _decode(
6424            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6425        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6426        {
6427            let _response = fidl::client::decode_transaction_body::<
6428                fidl::encoding::ResultType<
6429                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6430                    fidl_fuchsia_posix::Errno,
6431                >,
6432                fidl::encoding::DefaultFuchsiaResourceDialect,
6433                0x4aa3340a1a26b89c,
6434            >(_buf?)?;
6435            Ok(_response.map(|x| x.value))
6436        }
6437        self.client.send_query_and_decode::<
6438            fidl::encoding::EmptyPayload,
6439            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6440        >(
6441            (),
6442            0x4aa3340a1a26b89c,
6443            fidl::encoding::DynamicFlags::empty(),
6444            _decode,
6445        )
6446    }
6447
6448    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6449        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6450        fidl::encoding::DefaultFuchsiaResourceDialect,
6451    >;
6452    fn r#set_ipv6_receive_traffic_class(
6453        &self,
6454        mut value: bool,
6455    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6456        fn _decode(
6457            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6458        ) -> Result<
6459            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6460            fidl::Error,
6461        > {
6462            let _response = fidl::client::decode_transaction_body::<
6463                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6464                fidl::encoding::DefaultFuchsiaResourceDialect,
6465                0x58f07c8788d099a0,
6466            >(_buf?)?;
6467            Ok(_response.map(|x| x))
6468        }
6469        self.client.send_query_and_decode::<
6470            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6471            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6472        >(
6473            (value,),
6474            0x58f07c8788d099a0,
6475            fidl::encoding::DynamicFlags::empty(),
6476            _decode,
6477        )
6478    }
6479
6480    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6481        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6482        fidl::encoding::DefaultFuchsiaResourceDialect,
6483    >;
6484    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6485        fn _decode(
6486            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6487        ) -> Result<
6488            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6489            fidl::Error,
6490        > {
6491            let _response = fidl::client::decode_transaction_body::<
6492                fidl::encoding::ResultType<
6493                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6494                    fidl_fuchsia_posix::Errno,
6495                >,
6496                fidl::encoding::DefaultFuchsiaResourceDialect,
6497                0x2e334df1da553ffa,
6498            >(_buf?)?;
6499            Ok(_response.map(|x| x.value))
6500        }
6501        self.client.send_query_and_decode::<
6502            fidl::encoding::EmptyPayload,
6503            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6504        >(
6505            (),
6506            0x2e334df1da553ffa,
6507            fidl::encoding::DynamicFlags::empty(),
6508            _decode,
6509        )
6510    }
6511
6512    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6513        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6514        fidl::encoding::DefaultFuchsiaResourceDialect,
6515    >;
6516    fn r#set_ipv6_traffic_class(
6517        &self,
6518        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6519    ) -> Self::SetIpv6TrafficClassResponseFut {
6520        fn _decode(
6521            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6522        ) -> Result<
6523            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6524            fidl::Error,
6525        > {
6526            let _response = fidl::client::decode_transaction_body::<
6527                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6528                fidl::encoding::DefaultFuchsiaResourceDialect,
6529                0x6af077800c5a0b4f,
6530            >(_buf?)?;
6531            Ok(_response.map(|x| x))
6532        }
6533        self.client.send_query_and_decode::<
6534            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6535            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6536        >(
6537            (value,),
6538            0x6af077800c5a0b4f,
6539            fidl::encoding::DynamicFlags::empty(),
6540            _decode,
6541        )
6542    }
6543
6544    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6545        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6546        fidl::encoding::DefaultFuchsiaResourceDialect,
6547    >;
6548    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6549        fn _decode(
6550            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6551        ) -> Result<
6552            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6553            fidl::Error,
6554        > {
6555            let _response = fidl::client::decode_transaction_body::<
6556                fidl::encoding::ResultType<
6557                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6558                    fidl_fuchsia_posix::Errno,
6559                >,
6560                fidl::encoding::DefaultFuchsiaResourceDialect,
6561                0x6baf6eed8fc2f04,
6562            >(_buf?)?;
6563            Ok(_response.map(|x| x.value))
6564        }
6565        self.client.send_query_and_decode::<
6566            fidl::encoding::EmptyPayload,
6567            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6568        >(
6569            (),
6570            0x6baf6eed8fc2f04,
6571            fidl::encoding::DynamicFlags::empty(),
6572            _decode,
6573        )
6574    }
6575
6576    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6577        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6578        fidl::encoding::DefaultFuchsiaResourceDialect,
6579    >;
6580    fn r#set_ipv6_receive_packet_info(
6581        &self,
6582        mut value: bool,
6583    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6584        fn _decode(
6585            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6586        ) -> Result<
6587            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6588            fidl::Error,
6589        > {
6590            let _response = fidl::client::decode_transaction_body::<
6591                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6592                fidl::encoding::DefaultFuchsiaResourceDialect,
6593                0x19259775b1a92768,
6594            >(_buf?)?;
6595            Ok(_response.map(|x| x))
6596        }
6597        self.client.send_query_and_decode::<
6598            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6599            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6600        >(
6601            (value,),
6602            0x19259775b1a92768,
6603            fidl::encoding::DynamicFlags::empty(),
6604            _decode,
6605        )
6606    }
6607
6608    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6609        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6610        fidl::encoding::DefaultFuchsiaResourceDialect,
6611    >;
6612    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6613        fn _decode(
6614            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6615        ) -> Result<
6616            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6617            fidl::Error,
6618        > {
6619            let _response = fidl::client::decode_transaction_body::<
6620                fidl::encoding::ResultType<
6621                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6622                    fidl_fuchsia_posix::Errno,
6623                >,
6624                fidl::encoding::DefaultFuchsiaResourceDialect,
6625                0x7acd4a2775baec75,
6626            >(_buf?)?;
6627            Ok(_response.map(|x| x.value))
6628        }
6629        self.client.send_query_and_decode::<
6630            fidl::encoding::EmptyPayload,
6631            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6632        >(
6633            (),
6634            0x7acd4a2775baec75,
6635            fidl::encoding::DynamicFlags::empty(),
6636            _decode,
6637        )
6638    }
6639
6640    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6641        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6642        fidl::encoding::DefaultFuchsiaResourceDialect,
6643    >;
6644    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6645        fn _decode(
6646            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6647        ) -> Result<
6648            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6649            fidl::Error,
6650        > {
6651            let _response = fidl::client::decode_transaction_body::<
6652                fidl::encoding::ResultType<
6653                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6654                    fidl_fuchsia_posix::Errno,
6655                >,
6656                fidl::encoding::DefaultFuchsiaResourceDialect,
6657                0x38bf28f0dafdbac0,
6658            >(_buf?)?;
6659            Ok(_response.map(|x| x.value))
6660        }
6661        self.client.send_query_and_decode::<
6662            fidl::encoding::EmptyPayload,
6663            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6664        >(
6665            (),
6666            0x38bf28f0dafdbac0,
6667            fidl::encoding::DynamicFlags::empty(),
6668            _decode,
6669        )
6670    }
6671
6672    type DescribeResponseFut = fidl::client::QueryResponseFut<
6673        SocketDescribeResponse,
6674        fidl::encoding::DefaultFuchsiaResourceDialect,
6675    >;
6676    fn r#describe(&self) -> Self::DescribeResponseFut {
6677        fn _decode(
6678            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6679        ) -> Result<SocketDescribeResponse, fidl::Error> {
6680            let _response = fidl::client::decode_transaction_body::<
6681                SocketDescribeResponse,
6682                fidl::encoding::DefaultFuchsiaResourceDialect,
6683                0x335706eccf54a135,
6684            >(_buf?)?;
6685            Ok(_response)
6686        }
6687        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6688            (),
6689            0x335706eccf54a135,
6690            fidl::encoding::DynamicFlags::empty(),
6691            _decode,
6692        )
6693    }
6694
6695    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6696        SocketRecvMsgResult,
6697        fidl::encoding::DefaultFuchsiaResourceDialect,
6698    >;
6699    fn r#recv_msg(
6700        &self,
6701        mut want_addr: bool,
6702        mut data_len: u32,
6703        mut want_control: bool,
6704        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6705    ) -> Self::RecvMsgResponseFut {
6706        fn _decode(
6707            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6708        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6709            let _response = fidl::client::decode_transaction_body::<
6710                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6711                fidl::encoding::DefaultFuchsiaResourceDialect,
6712                0x1dfb695351d3aa1d,
6713            >(_buf?)?;
6714            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6715        }
6716        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6717            (want_addr, data_len, want_control, flags),
6718            0x1dfb695351d3aa1d,
6719            fidl::encoding::DynamicFlags::empty(),
6720            _decode,
6721        )
6722    }
6723
6724    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6725        SocketSendMsgResult,
6726        fidl::encoding::DefaultFuchsiaResourceDialect,
6727    >;
6728    fn r#send_msg(
6729        &self,
6730        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6731        mut data: &[u8],
6732        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6733        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6734    ) -> Self::SendMsgResponseFut {
6735        fn _decode(
6736            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6737        ) -> Result<SocketSendMsgResult, fidl::Error> {
6738            let _response = fidl::client::decode_transaction_body::<
6739                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6740                fidl::encoding::DefaultFuchsiaResourceDialect,
6741                0x2cf1eac9a7fc8958,
6742            >(_buf?)?;
6743            Ok(_response.map(|x| x))
6744        }
6745        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6746            (addr, data, control, flags),
6747            0x2cf1eac9a7fc8958,
6748            fidl::encoding::DynamicFlags::empty(),
6749            _decode,
6750        )
6751    }
6752
6753    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6754        SocketGetInfoResult,
6755        fidl::encoding::DefaultFuchsiaResourceDialect,
6756    >;
6757    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6758        fn _decode(
6759            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6760        ) -> Result<SocketGetInfoResult, fidl::Error> {
6761            let _response = fidl::client::decode_transaction_body::<
6762                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6763                fidl::encoding::DefaultFuchsiaResourceDialect,
6764                0x39676f75aec339ba,
6765            >(_buf?)?;
6766            Ok(_response.map(|x| (x.domain, x.proto)))
6767        }
6768        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6769            (),
6770            0x39676f75aec339ba,
6771            fidl::encoding::DynamicFlags::empty(),
6772            _decode,
6773        )
6774    }
6775
6776    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6777        SocketSetIpHeaderIncludedResult,
6778        fidl::encoding::DefaultFuchsiaResourceDialect,
6779    >;
6780    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6781        fn _decode(
6782            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6783        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6784            let _response = fidl::client::decode_transaction_body::<
6785                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6786                fidl::encoding::DefaultFuchsiaResourceDialect,
6787                0x5d06a606d95e8f3,
6788            >(_buf?)?;
6789            Ok(_response.map(|x| x))
6790        }
6791        self.client.send_query_and_decode::<
6792            SocketSetIpHeaderIncludedRequest,
6793            SocketSetIpHeaderIncludedResult,
6794        >(
6795            (value,),
6796            0x5d06a606d95e8f3,
6797            fidl::encoding::DynamicFlags::empty(),
6798            _decode,
6799        )
6800    }
6801
6802    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6803        SocketGetIpHeaderIncludedResult,
6804        fidl::encoding::DefaultFuchsiaResourceDialect,
6805    >;
6806    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6807        fn _decode(
6808            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6809        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6810            let _response = fidl::client::decode_transaction_body::<
6811                fidl::encoding::ResultType<
6812                    SocketGetIpHeaderIncludedResponse,
6813                    fidl_fuchsia_posix::Errno,
6814                >,
6815                fidl::encoding::DefaultFuchsiaResourceDialect,
6816                0x76125ad1f4d175f6,
6817            >(_buf?)?;
6818            Ok(_response.map(|x| x.value))
6819        }
6820        self.client
6821            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6822                (),
6823                0x76125ad1f4d175f6,
6824                fidl::encoding::DynamicFlags::empty(),
6825                _decode,
6826            )
6827    }
6828
6829    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6830        SocketSetIcmpv6FilterResult,
6831        fidl::encoding::DefaultFuchsiaResourceDialect,
6832    >;
6833    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6834        fn _decode(
6835            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6836        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6837            let _response = fidl::client::decode_transaction_body::<
6838                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6839                fidl::encoding::DefaultFuchsiaResourceDialect,
6840                0x4ebea92a43ae68a9,
6841            >(_buf?)?;
6842            Ok(_response.map(|x| x))
6843        }
6844        self.client
6845            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6846                (filter,),
6847                0x4ebea92a43ae68a9,
6848                fidl::encoding::DynamicFlags::empty(),
6849                _decode,
6850            )
6851    }
6852
6853    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6854        SocketGetIcmpv6FilterResult,
6855        fidl::encoding::DefaultFuchsiaResourceDialect,
6856    >;
6857    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6858        fn _decode(
6859            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6860        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6861            let _response = fidl::client::decode_transaction_body::<
6862                fidl::encoding::ResultType<
6863                    SocketGetIcmpv6FilterResponse,
6864                    fidl_fuchsia_posix::Errno,
6865                >,
6866                fidl::encoding::DefaultFuchsiaResourceDialect,
6867                0x43bd4f3bc0970ace,
6868            >(_buf?)?;
6869            Ok(_response.map(|x| x.filter))
6870        }
6871        self.client
6872            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6873                (),
6874                0x43bd4f3bc0970ace,
6875                fidl::encoding::DynamicFlags::empty(),
6876                _decode,
6877            )
6878    }
6879
6880    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6881        SocketSetIpv6ChecksumResult,
6882        fidl::encoding::DefaultFuchsiaResourceDialect,
6883    >;
6884    fn r#set_ipv6_checksum(
6885        &self,
6886        mut config: &Ipv6ChecksumConfiguration,
6887    ) -> Self::SetIpv6ChecksumResponseFut {
6888        fn _decode(
6889            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6890        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6891            let _response = fidl::client::decode_transaction_body::<
6892                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6893                fidl::encoding::DefaultFuchsiaResourceDialect,
6894                0x18b7809577199cb4,
6895            >(_buf?)?;
6896            Ok(_response.map(|x| x))
6897        }
6898        self.client
6899            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6900                (config,),
6901                0x18b7809577199cb4,
6902                fidl::encoding::DynamicFlags::empty(),
6903                _decode,
6904            )
6905    }
6906
6907    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6908        SocketGetIpv6ChecksumResult,
6909        fidl::encoding::DefaultFuchsiaResourceDialect,
6910    >;
6911    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6912        fn _decode(
6913            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6914        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6915            let _response = fidl::client::decode_transaction_body::<
6916                fidl::encoding::ResultType<
6917                    SocketGetIpv6ChecksumResponse,
6918                    fidl_fuchsia_posix::Errno,
6919                >,
6920                fidl::encoding::DefaultFuchsiaResourceDialect,
6921                0x1847bf5b2d263dd,
6922            >(_buf?)?;
6923            Ok(_response.map(|x| x.config))
6924        }
6925        self.client
6926            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6927                (),
6928                0x1847bf5b2d263dd,
6929                fidl::encoding::DynamicFlags::empty(),
6930                _decode,
6931            )
6932    }
6933}
6934
6935pub struct SocketEventStream {
6936    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6937}
6938
6939impl std::marker::Unpin for SocketEventStream {}
6940
6941impl futures::stream::FusedStream for SocketEventStream {
6942    fn is_terminated(&self) -> bool {
6943        self.event_receiver.is_terminated()
6944    }
6945}
6946
6947impl futures::Stream for SocketEventStream {
6948    type Item = Result<SocketEvent, fidl::Error>;
6949
6950    fn poll_next(
6951        mut self: std::pin::Pin<&mut Self>,
6952        cx: &mut std::task::Context<'_>,
6953    ) -> std::task::Poll<Option<Self::Item>> {
6954        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6955            &mut self.event_receiver,
6956            cx
6957        )?) {
6958            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6959            None => std::task::Poll::Ready(None),
6960        }
6961    }
6962}
6963
6964#[derive(Debug)]
6965pub enum SocketEvent {}
6966
6967impl SocketEvent {
6968    /// Decodes a message buffer as a [`SocketEvent`].
6969    fn decode(
6970        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6971    ) -> Result<SocketEvent, fidl::Error> {
6972        let (bytes, _handles) = buf.split_mut();
6973        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6974        debug_assert_eq!(tx_header.tx_id, 0);
6975        match tx_header.ordinal {
6976            _ => Err(fidl::Error::UnknownOrdinal {
6977                ordinal: tx_header.ordinal,
6978                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6979            }),
6980        }
6981    }
6982}
6983
6984/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6985pub struct SocketRequestStream {
6986    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6987    is_terminated: bool,
6988}
6989
6990impl std::marker::Unpin for SocketRequestStream {}
6991
6992impl futures::stream::FusedStream for SocketRequestStream {
6993    fn is_terminated(&self) -> bool {
6994        self.is_terminated
6995    }
6996}
6997
6998impl fidl::endpoints::RequestStream for SocketRequestStream {
6999    type Protocol = SocketMarker;
7000    type ControlHandle = SocketControlHandle;
7001
7002    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
7003        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
7004    }
7005
7006    fn control_handle(&self) -> Self::ControlHandle {
7007        SocketControlHandle { inner: self.inner.clone() }
7008    }
7009
7010    fn into_inner(
7011        self,
7012    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
7013    {
7014        (self.inner, self.is_terminated)
7015    }
7016
7017    fn from_inner(
7018        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7019        is_terminated: bool,
7020    ) -> Self {
7021        Self { inner, is_terminated }
7022    }
7023}
7024
7025impl futures::Stream for SocketRequestStream {
7026    type Item = Result<SocketRequest, fidl::Error>;
7027
7028    fn poll_next(
7029        mut self: std::pin::Pin<&mut Self>,
7030        cx: &mut std::task::Context<'_>,
7031    ) -> std::task::Poll<Option<Self::Item>> {
7032        let this = &mut *self;
7033        if this.inner.check_shutdown(cx) {
7034            this.is_terminated = true;
7035            return std::task::Poll::Ready(None);
7036        }
7037        if this.is_terminated {
7038            panic!("polled SocketRequestStream after completion");
7039        }
7040        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
7041            |bytes, handles| {
7042                match this.inner.channel().read_etc(cx, bytes, handles) {
7043                    std::task::Poll::Ready(Ok(())) => {}
7044                    std::task::Poll::Pending => return std::task::Poll::Pending,
7045                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
7046                        this.is_terminated = true;
7047                        return std::task::Poll::Ready(None);
7048                    }
7049                    std::task::Poll::Ready(Err(e)) => {
7050                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
7051                            e.into(),
7052                        ))));
7053                    }
7054                }
7055
7056                // A message has been received from the channel
7057                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
7058
7059                std::task::Poll::Ready(Some(match header.ordinal {
7060                    0x20d8a7aba2168a79 => {
7061                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
7062                        let mut req = fidl::new_empty!(
7063                            fidl_fuchsia_unknown::CloneableCloneRequest,
7064                            fidl::encoding::DefaultFuchsiaResourceDialect
7065                        );
7066                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
7067                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7068                        Ok(SocketRequest::Clone { request: req.request, control_handle })
7069                    }
7070                    0x5ac5d459ad7f657e => {
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::Close {
7079                            responder: SocketCloseResponder {
7080                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7081                                tx_id: header.tx_id,
7082                            },
7083                        })
7084                    }
7085                    0x2658edee9decfc06 => {
7086                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7087                        let mut req = fidl::new_empty!(
7088                            fidl::encoding::EmptyPayload,
7089                            fidl::encoding::DefaultFuchsiaResourceDialect
7090                        );
7091                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7092                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7093                        Ok(SocketRequest::Query {
7094                            responder: SocketQueryResponder {
7095                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7096                                tx_id: header.tx_id,
7097                            },
7098                        })
7099                    }
7100                    0x1fd74ee8b9a4a876 => {
7101                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7102                        let mut req = fidl::new_empty!(
7103                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
7104                            fidl::encoding::DefaultFuchsiaResourceDialect
7105                        );
7106                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7107                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7108                        Ok(SocketRequest::SetReuseAddress {
7109                            value: req.value,
7110
7111                            responder: SocketSetReuseAddressResponder {
7112                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7113                                tx_id: header.tx_id,
7114                            },
7115                        })
7116                    }
7117                    0x67b7206b8d1bc0a5 => {
7118                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7119                        let mut req = fidl::new_empty!(
7120                            fidl::encoding::EmptyPayload,
7121                            fidl::encoding::DefaultFuchsiaResourceDialect
7122                        );
7123                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7124                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7125                        Ok(SocketRequest::GetReuseAddress {
7126                            responder: SocketGetReuseAddressResponder {
7127                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7128                                tx_id: header.tx_id,
7129                            },
7130                        })
7131                    }
7132                    0x5aad39b33e5f6ebb => {
7133                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7134                        let mut req = fidl::new_empty!(
7135                            fidl::encoding::EmptyPayload,
7136                            fidl::encoding::DefaultFuchsiaResourceDialect
7137                        );
7138                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7139                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7140                        Ok(SocketRequest::GetError {
7141                            responder: SocketGetErrorResponder {
7142                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7143                                tx_id: header.tx_id,
7144                            },
7145                        })
7146                    }
7147                    0x6023e081ce3cd947 => {
7148                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7149                        let mut req = fidl::new_empty!(
7150                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
7151                            fidl::encoding::DefaultFuchsiaResourceDialect
7152                        );
7153                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
7154                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7155                        Ok(SocketRequest::SetBroadcast {
7156                            value: req.value,
7157
7158                            responder: SocketSetBroadcastResponder {
7159                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7160                                tx_id: header.tx_id,
7161                            },
7162                        })
7163                    }
7164                    0x68796fc556f9780d => {
7165                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7166                        let mut req = fidl::new_empty!(
7167                            fidl::encoding::EmptyPayload,
7168                            fidl::encoding::DefaultFuchsiaResourceDialect
7169                        );
7170                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7171                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7172                        Ok(SocketRequest::GetBroadcast {
7173                            responder: SocketGetBroadcastResponder {
7174                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7175                                tx_id: header.tx_id,
7176                            },
7177                        })
7178                    }
7179                    0x756eac32d73a7a70 => {
7180                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7181                        let mut req = fidl::new_empty!(
7182                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
7183                            fidl::encoding::DefaultFuchsiaResourceDialect
7184                        );
7185                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7186                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7187                        Ok(SocketRequest::SetSendBuffer {
7188                            value_bytes: req.value_bytes,
7189
7190                            responder: SocketSetSendBufferResponder {
7191                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7192                                tx_id: header.tx_id,
7193                            },
7194                        })
7195                    }
7196                    0x78a52fd9c7b2410b => {
7197                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7198                        let mut req = fidl::new_empty!(
7199                            fidl::encoding::EmptyPayload,
7200                            fidl::encoding::DefaultFuchsiaResourceDialect
7201                        );
7202                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7203                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7204                        Ok(SocketRequest::GetSendBuffer {
7205                            responder: SocketGetSendBufferResponder {
7206                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7207                                tx_id: header.tx_id,
7208                            },
7209                        })
7210                    }
7211                    0x6b0cf2f1919c7001 => {
7212                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7213                        let mut req = fidl::new_empty!(
7214                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7215                            fidl::encoding::DefaultFuchsiaResourceDialect
7216                        );
7217                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7218                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7219                        Ok(SocketRequest::SetReceiveBuffer {
7220                            value_bytes: req.value_bytes,
7221
7222                            responder: SocketSetReceiveBufferResponder {
7223                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7224                                tx_id: header.tx_id,
7225                            },
7226                        })
7227                    }
7228                    0x14c1a4b64f709e5c => {
7229                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7230                        let mut req = fidl::new_empty!(
7231                            fidl::encoding::EmptyPayload,
7232                            fidl::encoding::DefaultFuchsiaResourceDialect
7233                        );
7234                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7235                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7236                        Ok(SocketRequest::GetReceiveBuffer {
7237                            responder: SocketGetReceiveBufferResponder {
7238                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7239                                tx_id: header.tx_id,
7240                            },
7241                        })
7242                    }
7243                    0x572df8f0b920d2c7 => {
7244                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7245                        let mut req = fidl::new_empty!(
7246                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7247                            fidl::encoding::DefaultFuchsiaResourceDialect
7248                        );
7249                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7250                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7251                        Ok(SocketRequest::SetKeepAlive {
7252                            value: req.value,
7253
7254                            responder: SocketSetKeepAliveResponder {
7255                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7256                                tx_id: header.tx_id,
7257                            },
7258                        })
7259                    }
7260                    0x2dd29d3215f2c9d2 => {
7261                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7262                        let mut req = fidl::new_empty!(
7263                            fidl::encoding::EmptyPayload,
7264                            fidl::encoding::DefaultFuchsiaResourceDialect
7265                        );
7266                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7267                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7268                        Ok(SocketRequest::GetKeepAlive {
7269                            responder: SocketGetKeepAliveResponder {
7270                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7271                                tx_id: header.tx_id,
7272                            },
7273                        })
7274                    }
7275                    0x3ecb49968bee439 => {
7276                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7277                        let mut req = fidl::new_empty!(
7278                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7279                            fidl::encoding::DefaultFuchsiaResourceDialect
7280                        );
7281                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7282                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7283                        Ok(SocketRequest::SetOutOfBandInline {
7284                            value: req.value,
7285
7286                            responder: SocketSetOutOfBandInlineResponder {
7287                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7288                                tx_id: header.tx_id,
7289                            },
7290                        })
7291                    }
7292                    0x348c1ab3aeca1745 => {
7293                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7294                        let mut req = fidl::new_empty!(
7295                            fidl::encoding::EmptyPayload,
7296                            fidl::encoding::DefaultFuchsiaResourceDialect
7297                        );
7298                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7299                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7300                        Ok(SocketRequest::GetOutOfBandInline {
7301                            responder: SocketGetOutOfBandInlineResponder {
7302                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7303                                tx_id: header.tx_id,
7304                            },
7305                        })
7306                    }
7307                    0x6bbf00c53a4c78c2 => {
7308                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7309                        let mut req = fidl::new_empty!(
7310                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7311                            fidl::encoding::DefaultFuchsiaResourceDialect
7312                        );
7313                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7314                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7315                        Ok(SocketRequest::SetNoCheck {
7316                            value: req.value,
7317
7318                            responder: SocketSetNoCheckResponder {
7319                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7320                                tx_id: header.tx_id,
7321                            },
7322                        })
7323                    }
7324                    0x2cd4249286417694 => {
7325                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7326                        let mut req = fidl::new_empty!(
7327                            fidl::encoding::EmptyPayload,
7328                            fidl::encoding::DefaultFuchsiaResourceDialect
7329                        );
7330                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7331                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7332                        Ok(SocketRequest::GetNoCheck {
7333                            responder: SocketGetNoCheckResponder {
7334                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7335                                tx_id: header.tx_id,
7336                            },
7337                        })
7338                    }
7339                    0x45386351246e998e => {
7340                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7341                        let mut req = fidl::new_empty!(
7342                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7343                            fidl::encoding::DefaultFuchsiaResourceDialect
7344                        );
7345                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7346                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7347                        Ok(SocketRequest::SetLinger {
7348                            linger: req.linger,
7349                            length_secs: req.length_secs,
7350
7351                            responder: SocketSetLingerResponder {
7352                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7353                                tx_id: header.tx_id,
7354                            },
7355                        })
7356                    }
7357                    0x48eb20fc5ccb0e45 => {
7358                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7359                        let mut req = fidl::new_empty!(
7360                            fidl::encoding::EmptyPayload,
7361                            fidl::encoding::DefaultFuchsiaResourceDialect
7362                        );
7363                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7364                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7365                        Ok(SocketRequest::GetLinger {
7366                            responder: SocketGetLingerResponder {
7367                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7368                                tx_id: header.tx_id,
7369                            },
7370                        })
7371                    }
7372                    0x547dc9cc0455189e => {
7373                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7374                        let mut req = fidl::new_empty!(
7375                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7376                            fidl::encoding::DefaultFuchsiaResourceDialect
7377                        );
7378                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7379                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7380                        Ok(SocketRequest::SetReusePort {
7381                            value: req.value,
7382
7383                            responder: SocketSetReusePortResponder {
7384                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7385                                tx_id: header.tx_id,
7386                            },
7387                        })
7388                    }
7389                    0x24dd3e5cb36d9ccb => {
7390                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7391                        let mut req = fidl::new_empty!(
7392                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
7393                            fidl::encoding::DefaultFuchsiaResourceDialect
7394                        );
7395                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest>(&header, _body_bytes, handles, &mut req)?;
7396                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7397                        Ok(SocketRequest::SetReusePortDeprecated {
7398                            value: req.value,
7399
7400                            responder: SocketSetReusePortDeprecatedResponder {
7401                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7402                                tx_id: header.tx_id,
7403                            },
7404                        })
7405                    }
7406                    0x7a112c1ab54ff828 => {
7407                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7408                        let mut req = fidl::new_empty!(
7409                            fidl::encoding::EmptyPayload,
7410                            fidl::encoding::DefaultFuchsiaResourceDialect
7411                        );
7412                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7413                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7414                        Ok(SocketRequest::GetReusePort {
7415                            responder: SocketGetReusePortResponder {
7416                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7417                                tx_id: header.tx_id,
7418                            },
7419                        })
7420                    }
7421                    0x67ce6db6c2ec8966 => {
7422                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7423                        let mut req = fidl::new_empty!(
7424                            fidl::encoding::EmptyPayload,
7425                            fidl::encoding::DefaultFuchsiaResourceDialect
7426                        );
7427                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7428                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7429                        Ok(SocketRequest::GetAcceptConn {
7430                            responder: SocketGetAcceptConnResponder {
7431                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7432                                tx_id: header.tx_id,
7433                            },
7434                        })
7435                    }
7436                    0x2118b483f28aafc4 => {
7437                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7438                        let mut req = fidl::new_empty!(
7439                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7440                            fidl::encoding::DefaultFuchsiaResourceDialect
7441                        );
7442                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7443                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7444                        Ok(SocketRequest::SetBindToDevice {
7445                            value: req.value,
7446
7447                            responder: SocketSetBindToDeviceResponder {
7448                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7449                                tx_id: header.tx_id,
7450                            },
7451                        })
7452                    }
7453                    0x1ab1fbf0ef7906c8 => {
7454                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7455                        let mut req = fidl::new_empty!(
7456                            fidl::encoding::EmptyPayload,
7457                            fidl::encoding::DefaultFuchsiaResourceDialect
7458                        );
7459                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7460                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7461                        Ok(SocketRequest::GetBindToDevice {
7462                            responder: SocketGetBindToDeviceResponder {
7463                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7464                                tx_id: header.tx_id,
7465                            },
7466                        })
7467                    }
7468                    0x6e387a0def00821 => {
7469                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7470                        let mut req = fidl::new_empty!(
7471                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7472                            fidl::encoding::DefaultFuchsiaResourceDialect
7473                        );
7474                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7475                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7476                        Ok(SocketRequest::SetBindToInterfaceIndex {
7477                            value: req.value,
7478
7479                            responder: SocketSetBindToInterfaceIndexResponder {
7480                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7481                                tx_id: header.tx_id,
7482                            },
7483                        })
7484                    }
7485                    0x59c31dd3e3078295 => {
7486                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7487                        let mut req = fidl::new_empty!(
7488                            fidl::encoding::EmptyPayload,
7489                            fidl::encoding::DefaultFuchsiaResourceDialect
7490                        );
7491                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7492                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7493                        Ok(SocketRequest::GetBindToInterfaceIndex {
7494                            responder: SocketGetBindToInterfaceIndexResponder {
7495                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7496                                tx_id: header.tx_id,
7497                            },
7498                        })
7499                    }
7500                    0x285d6516c263d839 => {
7501                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7502                        let mut req = fidl::new_empty!(
7503                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7504                            fidl::encoding::DefaultFuchsiaResourceDialect
7505                        );
7506                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7507                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7508                        Ok(SocketRequest::SetTimestamp {
7509                            value: req.value,
7510
7511                            responder: SocketSetTimestampResponder {
7512                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7513                                tx_id: header.tx_id,
7514                            },
7515                        })
7516                    }
7517                    0x49f2fffbbcc2bd27 => {
7518                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7519                        let mut req = fidl::new_empty!(
7520                            fidl::encoding::EmptyPayload,
7521                            fidl::encoding::DefaultFuchsiaResourceDialect
7522                        );
7523                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7524                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7525                        Ok(SocketRequest::GetTimestamp {
7526                            responder: SocketGetTimestampResponder {
7527                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7528                                tx_id: header.tx_id,
7529                            },
7530                        })
7531                    }
7532                    0x6ead6de09f653236 => {
7533                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7534                        let mut req = fidl::new_empty!(
7535                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7536                            fidl::encoding::DefaultFuchsiaResourceDialect
7537                        );
7538                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7539                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7540                        Ok(SocketRequest::SetMark {
7541                            domain: req.domain,
7542                            mark: req.mark,
7543
7544                            responder: SocketSetMarkResponder {
7545                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7546                                tx_id: header.tx_id,
7547                            },
7548                        })
7549                    }
7550                    0x57a2752c61d93d47 => {
7551                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7552                        let mut req = fidl::new_empty!(
7553                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7554                            fidl::encoding::DefaultFuchsiaResourceDialect
7555                        );
7556                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7557                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7558                        Ok(SocketRequest::GetMark {
7559                            domain: req.domain,
7560
7561                            responder: SocketGetMarkResponder {
7562                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7563                                tx_id: header.tx_id,
7564                            },
7565                        })
7566                    }
7567                    0x2c2f47fd8f924e52 => {
7568                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7569                        let mut req = fidl::new_empty!(
7570                            fidl::encoding::EmptyPayload,
7571                            fidl::encoding::DefaultFuchsiaResourceDialect
7572                        );
7573                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7574                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7575                        Ok(SocketRequest::GetCookie {
7576                            responder: SocketGetCookieResponder {
7577                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7578                                tx_id: header.tx_id,
7579                            },
7580                        })
7581                    }
7582                    0x4bc6400ae92125d => {
7583                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7584                        let mut req = fidl::new_empty!(
7585                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7586                            fidl::encoding::DefaultFuchsiaResourceDialect
7587                        );
7588                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7589                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7590                        Ok(SocketRequest::Bind {
7591                            addr: req.addr,
7592
7593                            responder: SocketBindResponder {
7594                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7595                                tx_id: header.tx_id,
7596                            },
7597                        })
7598                    }
7599                    0x5f05f19bfdd38871 => {
7600                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7601                        let mut req = fidl::new_empty!(
7602                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7603                            fidl::encoding::DefaultFuchsiaResourceDialect
7604                        );
7605                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7606                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7607                        Ok(SocketRequest::Connect {
7608                            addr: req.addr,
7609
7610                            responder: SocketConnectResponder {
7611                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7612                                tx_id: header.tx_id,
7613                            },
7614                        })
7615                    }
7616                    0x74e63b91f7b29b2 => {
7617                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7618                        let mut req = fidl::new_empty!(
7619                            fidl::encoding::EmptyPayload,
7620                            fidl::encoding::DefaultFuchsiaResourceDialect
7621                        );
7622                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7623                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7624                        Ok(SocketRequest::Disconnect {
7625                            responder: SocketDisconnectResponder {
7626                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7627                                tx_id: header.tx_id,
7628                            },
7629                        })
7630                    }
7631                    0x475f23f84a1a4f85 => {
7632                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7633                        let mut req = fidl::new_empty!(
7634                            fidl::encoding::EmptyPayload,
7635                            fidl::encoding::DefaultFuchsiaResourceDialect
7636                        );
7637                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7638                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7639                        Ok(SocketRequest::GetSockName {
7640                            responder: SocketGetSockNameResponder {
7641                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7642                                tx_id: header.tx_id,
7643                            },
7644                        })
7645                    }
7646                    0x1ffecf4bd5b6432e => {
7647                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7648                        let mut req = fidl::new_empty!(
7649                            fidl::encoding::EmptyPayload,
7650                            fidl::encoding::DefaultFuchsiaResourceDialect
7651                        );
7652                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7653                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7654                        Ok(SocketRequest::GetPeerName {
7655                            responder: SocketGetPeerNameResponder {
7656                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7657                                tx_id: header.tx_id,
7658                            },
7659                        })
7660                    }
7661                    0x247f38b6db68c336 => {
7662                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7663                        let mut req = fidl::new_empty!(
7664                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7665                            fidl::encoding::DefaultFuchsiaResourceDialect
7666                        );
7667                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7668                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7669                        Ok(SocketRequest::Shutdown {
7670                            mode: req.mode,
7671
7672                            responder: SocketShutdownResponder {
7673                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7674                                tx_id: header.tx_id,
7675                            },
7676                        })
7677                    }
7678                    0x995c600475b6d46 => {
7679                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7680                        let mut req = fidl::new_empty!(
7681                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7682                            fidl::encoding::DefaultFuchsiaResourceDialect
7683                        );
7684                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7685                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7686                        Ok(SocketRequest::SetIpTypeOfService {
7687                            value: req.value,
7688
7689                            responder: SocketSetIpTypeOfServiceResponder {
7690                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7691                                tx_id: header.tx_id,
7692                            },
7693                        })
7694                    }
7695                    0x3814a04259f75fcb => {
7696                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7697                        let mut req = fidl::new_empty!(
7698                            fidl::encoding::EmptyPayload,
7699                            fidl::encoding::DefaultFuchsiaResourceDialect
7700                        );
7701                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7702                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7703                        Ok(SocketRequest::GetIpTypeOfService {
7704                            responder: SocketGetIpTypeOfServiceResponder {
7705                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7706                                tx_id: header.tx_id,
7707                            },
7708                        })
7709                    }
7710                    0x29e2424b433ae1ef => {
7711                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7712                        let mut req = fidl::new_empty!(
7713                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7714                            fidl::encoding::DefaultFuchsiaResourceDialect
7715                        );
7716                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7717                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7718                        Ok(SocketRequest::SetIpTtl {
7719                            value: req.value,
7720
7721                            responder: SocketSetIpTtlResponder {
7722                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7723                                tx_id: header.tx_id,
7724                            },
7725                        })
7726                    }
7727                    0x47e47fa1f24da471 => {
7728                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7729                        let mut req = fidl::new_empty!(
7730                            fidl::encoding::EmptyPayload,
7731                            fidl::encoding::DefaultFuchsiaResourceDialect
7732                        );
7733                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7734                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7735                        Ok(SocketRequest::GetIpTtl {
7736                            responder: SocketGetIpTtlResponder {
7737                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7738                                tx_id: header.tx_id,
7739                            },
7740                        })
7741                    }
7742                    0x392d16bee20c0e16 => {
7743                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7744                        let mut req = fidl::new_empty!(
7745                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7746                            fidl::encoding::DefaultFuchsiaResourceDialect
7747                        );
7748                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7749                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7750                        Ok(SocketRequest::SetIpPacketInfo {
7751                            value: req.value,
7752
7753                            responder: SocketSetIpPacketInfoResponder {
7754                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7755                                tx_id: header.tx_id,
7756                            },
7757                        })
7758                    }
7759                    0x54b505f242280740 => {
7760                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7761                        let mut req = fidl::new_empty!(
7762                            fidl::encoding::EmptyPayload,
7763                            fidl::encoding::DefaultFuchsiaResourceDialect
7764                        );
7765                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7766                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7767                        Ok(SocketRequest::GetIpPacketInfo {
7768                            responder: SocketGetIpPacketInfoResponder {
7769                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7770                                tx_id: header.tx_id,
7771                            },
7772                        })
7773                    }
7774                    0x6c4f6714995f84ef => {
7775                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7776                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7777                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7778                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7779                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7780                            value: req.value,
7781
7782                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7783                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7784                                tx_id: header.tx_id,
7785                            },
7786                        })
7787                    }
7788                    0x4158ba7dc2795960 => {
7789                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7790                        let mut req = fidl::new_empty!(
7791                            fidl::encoding::EmptyPayload,
7792                            fidl::encoding::DefaultFuchsiaResourceDialect
7793                        );
7794                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7795                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7796                        Ok(SocketRequest::GetIpReceiveTypeOfService {
7797                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7798                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7799                                tx_id: header.tx_id,
7800                            },
7801                        })
7802                    }
7803                    0x46f15be0ce0ab82b => {
7804                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7805                        let mut req = fidl::new_empty!(
7806                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7807                            fidl::encoding::DefaultFuchsiaResourceDialect
7808                        );
7809                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7810                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7811                        Ok(SocketRequest::SetIpReceiveTtl {
7812                            value: req.value,
7813
7814                            responder: SocketSetIpReceiveTtlResponder {
7815                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7816                                tx_id: header.tx_id,
7817                            },
7818                        })
7819                    }
7820                    0x678ddd5a5dfa2eb5 => {
7821                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7822                        let mut req = fidl::new_empty!(
7823                            fidl::encoding::EmptyPayload,
7824                            fidl::encoding::DefaultFuchsiaResourceDialect
7825                        );
7826                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7827                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7828                        Ok(SocketRequest::GetIpReceiveTtl {
7829                            responder: SocketGetIpReceiveTtlResponder {
7830                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7831                                tx_id: header.tx_id,
7832                            },
7833                        })
7834                    }
7835                    0x752fbfa9b12befe => {
7836                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7837                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7838                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7839                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7840                        Ok(SocketRequest::SetIpMulticastInterface {
7841                            iface: req.iface,
7842                            address: req.address,
7843
7844                            responder: SocketSetIpMulticastInterfaceResponder {
7845                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7846                                tx_id: header.tx_id,
7847                            },
7848                        })
7849                    }
7850                    0x320bd14c4df046c4 => {
7851                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7852                        let mut req = fidl::new_empty!(
7853                            fidl::encoding::EmptyPayload,
7854                            fidl::encoding::DefaultFuchsiaResourceDialect
7855                        );
7856                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7857                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7858                        Ok(SocketRequest::GetIpMulticastInterface {
7859                            responder: SocketGetIpMulticastInterfaceResponder {
7860                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7861                                tx_id: header.tx_id,
7862                            },
7863                        })
7864                    }
7865                    0x63134d53772916a1 => {
7866                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7867                        let mut req = fidl::new_empty!(
7868                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7869                            fidl::encoding::DefaultFuchsiaResourceDialect
7870                        );
7871                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7872                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7873                        Ok(SocketRequest::SetIpMulticastTtl {
7874                            value: req.value,
7875
7876                            responder: SocketSetIpMulticastTtlResponder {
7877                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7878                                tx_id: header.tx_id,
7879                            },
7880                        })
7881                    }
7882                    0x4665cd378f39e1a => {
7883                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7884                        let mut req = fidl::new_empty!(
7885                            fidl::encoding::EmptyPayload,
7886                            fidl::encoding::DefaultFuchsiaResourceDialect
7887                        );
7888                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7889                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7890                        Ok(SocketRequest::GetIpMulticastTtl {
7891                            responder: SocketGetIpMulticastTtlResponder {
7892                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7893                                tx_id: header.tx_id,
7894                            },
7895                        })
7896                    }
7897                    0x20c55c11f00943ea => {
7898                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7899                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7900                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7901                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7902                        Ok(SocketRequest::SetIpMulticastLoopback {
7903                            value: req.value,
7904
7905                            responder: SocketSetIpMulticastLoopbackResponder {
7906                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7907                                tx_id: header.tx_id,
7908                            },
7909                        })
7910                    }
7911                    0x3b6b26ff558298f2 => {
7912                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7913                        let mut req = fidl::new_empty!(
7914                            fidl::encoding::EmptyPayload,
7915                            fidl::encoding::DefaultFuchsiaResourceDialect
7916                        );
7917                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7918                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7919                        Ok(SocketRequest::GetIpMulticastLoopback {
7920                            responder: SocketGetIpMulticastLoopbackResponder {
7921                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7922                                tx_id: header.tx_id,
7923                            },
7924                        })
7925                    }
7926                    0x76bc7df115a3b4d0 => {
7927                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7928                        let mut req = fidl::new_empty!(
7929                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7930                            fidl::encoding::DefaultFuchsiaResourceDialect
7931                        );
7932                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7933                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7934                        Ok(SocketRequest::AddIpMembership {
7935                            membership: req.membership,
7936
7937                            responder: SocketAddIpMembershipResponder {
7938                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7939                                tx_id: header.tx_id,
7940                            },
7941                        })
7942                    }
7943                    0x2888f3099188d03 => {
7944                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7945                        let mut req = fidl::new_empty!(
7946                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7947                            fidl::encoding::DefaultFuchsiaResourceDialect
7948                        );
7949                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7950                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7951                        Ok(SocketRequest::DropIpMembership {
7952                            membership: req.membership,
7953
7954                            responder: SocketDropIpMembershipResponder {
7955                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7956                                tx_id: header.tx_id,
7957                            },
7958                        })
7959                    }
7960                    0x1ae532b0c066e3a0 => {
7961                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7962                        let mut req = fidl::new_empty!(
7963                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7964                            fidl::encoding::DefaultFuchsiaResourceDialect
7965                        );
7966                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7967                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7968                        Ok(SocketRequest::SetIpTransparent {
7969                            value: req.value,
7970
7971                            responder: SocketSetIpTransparentResponder {
7972                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7973                                tx_id: header.tx_id,
7974                            },
7975                        })
7976                    }
7977                    0x51d43695962ebfb5 => {
7978                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7979                        let mut req = fidl::new_empty!(
7980                            fidl::encoding::EmptyPayload,
7981                            fidl::encoding::DefaultFuchsiaResourceDialect
7982                        );
7983                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7984                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7985                        Ok(SocketRequest::GetIpTransparent {
7986                            responder: SocketGetIpTransparentResponder {
7987                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7988                                tx_id: header.tx_id,
7989                            },
7990                        })
7991                    }
7992                    0x4722b4ce52f7840 => {
7993                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7994                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7995                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7996                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7997                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7998                            value: req.value,
7999
8000                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
8001                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8002                                tx_id: header.tx_id,
8003                            },
8004                        })
8005                    }
8006                    0x2a0e7dc5d6bfdfe9 => {
8007                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8008                        let mut req = fidl::new_empty!(
8009                            fidl::encoding::EmptyPayload,
8010                            fidl::encoding::DefaultFuchsiaResourceDialect
8011                        );
8012                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8013                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8014                        Ok(SocketRequest::GetIpReceiveOriginalDestinationAddress {
8015                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
8016                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8017                                tx_id: header.tx_id,
8018                            },
8019                        })
8020                    }
8021                    0x7c94727acb4ea4b3 => {
8022                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8023                        let mut req = fidl::new_empty!(
8024                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
8025                            fidl::encoding::DefaultFuchsiaResourceDialect
8026                        );
8027                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
8028                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8029                        Ok(SocketRequest::AddIpv6Membership {
8030                            membership: req.membership,
8031
8032                            responder: SocketAddIpv6MembershipResponder {
8033                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8034                                tx_id: header.tx_id,
8035                            },
8036                        })
8037                    }
8038                    0x42104c70ccaba304 => {
8039                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8040                        let mut req = fidl::new_empty!(
8041                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
8042                            fidl::encoding::DefaultFuchsiaResourceDialect
8043                        );
8044                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
8045                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8046                        Ok(SocketRequest::DropIpv6Membership {
8047                            membership: req.membership,
8048
8049                            responder: SocketDropIpv6MembershipResponder {
8050                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8051                                tx_id: header.tx_id,
8052                            },
8053                        })
8054                    }
8055                    0x135f76db3774ab3b => {
8056                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8057                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8058                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
8059                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8060                        Ok(SocketRequest::SetIpv6MulticastInterface {
8061                            value: req.value,
8062
8063                            responder: SocketSetIpv6MulticastInterfaceResponder {
8064                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8065                                tx_id: header.tx_id,
8066                            },
8067                        })
8068                    }
8069                    0x1f26fcdd348f1882 => {
8070                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8071                        let mut req = fidl::new_empty!(
8072                            fidl::encoding::EmptyPayload,
8073                            fidl::encoding::DefaultFuchsiaResourceDialect
8074                        );
8075                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8076                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8077                        Ok(SocketRequest::GetIpv6MulticastInterface {
8078                            responder: SocketGetIpv6MulticastInterfaceResponder {
8079                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8080                                tx_id: header.tx_id,
8081                            },
8082                        })
8083                    }
8084                    0x157d51e98f462859 => {
8085                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8086                        let mut req = fidl::new_empty!(
8087                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
8088                            fidl::encoding::DefaultFuchsiaResourceDialect
8089                        );
8090                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8091                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8092                        Ok(SocketRequest::SetIpv6UnicastHops {
8093                            value: req.value,
8094
8095                            responder: SocketSetIpv6UnicastHopsResponder {
8096                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8097                                tx_id: header.tx_id,
8098                            },
8099                        })
8100                    }
8101                    0x21f4641cad8bd8d2 => {
8102                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8103                        let mut req = fidl::new_empty!(
8104                            fidl::encoding::EmptyPayload,
8105                            fidl::encoding::DefaultFuchsiaResourceDialect
8106                        );
8107                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8108                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8109                        Ok(SocketRequest::GetIpv6UnicastHops {
8110                            responder: SocketGetIpv6UnicastHopsResponder {
8111                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8112                                tx_id: header.tx_id,
8113                            },
8114                        })
8115                    }
8116                    0x5c24808ed2e84a1e => {
8117                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8118                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8119                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
8120                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8121                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
8122                            value: req.value,
8123
8124                            responder: SocketSetIpv6ReceiveHopLimitResponder {
8125                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8126                                tx_id: header.tx_id,
8127                            },
8128                        })
8129                    }
8130                    0x341e06689885b4c0 => {
8131                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8132                        let mut req = fidl::new_empty!(
8133                            fidl::encoding::EmptyPayload,
8134                            fidl::encoding::DefaultFuchsiaResourceDialect
8135                        );
8136                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8137                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8138                        Ok(SocketRequest::GetIpv6ReceiveHopLimit {
8139                            responder: SocketGetIpv6ReceiveHopLimitResponder {
8140                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8141                                tx_id: header.tx_id,
8142                            },
8143                        })
8144                    }
8145                    0x25b9cd4d181f82c1 => {
8146                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8147                        let mut req = fidl::new_empty!(
8148                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
8149                            fidl::encoding::DefaultFuchsiaResourceDialect
8150                        );
8151                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8152                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8153                        Ok(SocketRequest::SetIpv6MulticastHops {
8154                            value: req.value,
8155
8156                            responder: SocketSetIpv6MulticastHopsResponder {
8157                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8158                                tx_id: header.tx_id,
8159                            },
8160                        })
8161                    }
8162                    0x52916948a365012a => {
8163                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8164                        let mut req = fidl::new_empty!(
8165                            fidl::encoding::EmptyPayload,
8166                            fidl::encoding::DefaultFuchsiaResourceDialect
8167                        );
8168                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8169                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8170                        Ok(SocketRequest::GetIpv6MulticastHops {
8171                            responder: SocketGetIpv6MulticastHopsResponder {
8172                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8173                                tx_id: header.tx_id,
8174                            },
8175                        })
8176                    }
8177                    0x55701c409ff41b40 => {
8178                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8179                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8180                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
8181                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8182                        Ok(SocketRequest::SetIpv6MulticastLoopback {
8183                            value: req.value,
8184
8185                            responder: SocketSetIpv6MulticastLoopbackResponder {
8186                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8187                                tx_id: header.tx_id,
8188                            },
8189                        })
8190                    }
8191                    0x4415b701fde319c3 => {
8192                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8193                        let mut req = fidl::new_empty!(
8194                            fidl::encoding::EmptyPayload,
8195                            fidl::encoding::DefaultFuchsiaResourceDialect
8196                        );
8197                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8198                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8199                        Ok(SocketRequest::GetIpv6MulticastLoopback {
8200                            responder: SocketGetIpv6MulticastLoopbackResponder {
8201                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8202                                tx_id: header.tx_id,
8203                            },
8204                        })
8205                    }
8206                    0x4873f1364758cbba => {
8207                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8208                        let mut req = fidl::new_empty!(
8209                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8210                            fidl::encoding::DefaultFuchsiaResourceDialect
8211                        );
8212                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8213                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8214                        Ok(SocketRequest::SetIpv6Only {
8215                            value: req.value,
8216
8217                            responder: SocketSetIpv6OnlyResponder {
8218                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8219                                tx_id: header.tx_id,
8220                            },
8221                        })
8222                    }
8223                    0x4aa3340a1a26b89c => {
8224                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8225                        let mut req = fidl::new_empty!(
8226                            fidl::encoding::EmptyPayload,
8227                            fidl::encoding::DefaultFuchsiaResourceDialect
8228                        );
8229                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8230                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8231                        Ok(SocketRequest::GetIpv6Only {
8232                            responder: SocketGetIpv6OnlyResponder {
8233                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8234                                tx_id: header.tx_id,
8235                            },
8236                        })
8237                    }
8238                    0x58f07c8788d099a0 => {
8239                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8240                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8241                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8242                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8243                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8244                            value: req.value,
8245
8246                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8247                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8248                                tx_id: header.tx_id,
8249                            },
8250                        })
8251                    }
8252                    0x2e334df1da553ffa => {
8253                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8254                        let mut req = fidl::new_empty!(
8255                            fidl::encoding::EmptyPayload,
8256                            fidl::encoding::DefaultFuchsiaResourceDialect
8257                        );
8258                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8259                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8260                        Ok(SocketRequest::GetIpv6ReceiveTrafficClass {
8261                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8262                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8263                                tx_id: header.tx_id,
8264                            },
8265                        })
8266                    }
8267                    0x6af077800c5a0b4f => {
8268                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8269                        let mut req = fidl::new_empty!(
8270                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8271                            fidl::encoding::DefaultFuchsiaResourceDialect
8272                        );
8273                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8274                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8275                        Ok(SocketRequest::SetIpv6TrafficClass {
8276                            value: req.value,
8277
8278                            responder: SocketSetIpv6TrafficClassResponder {
8279                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8280                                tx_id: header.tx_id,
8281                            },
8282                        })
8283                    }
8284                    0x6baf6eed8fc2f04 => {
8285                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8286                        let mut req = fidl::new_empty!(
8287                            fidl::encoding::EmptyPayload,
8288                            fidl::encoding::DefaultFuchsiaResourceDialect
8289                        );
8290                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8291                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8292                        Ok(SocketRequest::GetIpv6TrafficClass {
8293                            responder: SocketGetIpv6TrafficClassResponder {
8294                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8295                                tx_id: header.tx_id,
8296                            },
8297                        })
8298                    }
8299                    0x19259775b1a92768 => {
8300                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8301                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8302                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8303                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8304                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8305                            value: req.value,
8306
8307                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8308                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8309                                tx_id: header.tx_id,
8310                            },
8311                        })
8312                    }
8313                    0x7acd4a2775baec75 => {
8314                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8315                        let mut req = fidl::new_empty!(
8316                            fidl::encoding::EmptyPayload,
8317                            fidl::encoding::DefaultFuchsiaResourceDialect
8318                        );
8319                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8320                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8321                        Ok(SocketRequest::GetIpv6ReceivePacketInfo {
8322                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8323                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8324                                tx_id: header.tx_id,
8325                            },
8326                        })
8327                    }
8328                    0x38bf28f0dafdbac0 => {
8329                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8330                        let mut req = fidl::new_empty!(
8331                            fidl::encoding::EmptyPayload,
8332                            fidl::encoding::DefaultFuchsiaResourceDialect
8333                        );
8334                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8335                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8336                        Ok(SocketRequest::GetOriginalDestination {
8337                            responder: SocketGetOriginalDestinationResponder {
8338                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8339                                tx_id: header.tx_id,
8340                            },
8341                        })
8342                    }
8343                    0x335706eccf54a135 => {
8344                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8345                        let mut req = fidl::new_empty!(
8346                            fidl::encoding::EmptyPayload,
8347                            fidl::encoding::DefaultFuchsiaResourceDialect
8348                        );
8349                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8350                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8351                        Ok(SocketRequest::Describe {
8352                            responder: SocketDescribeResponder {
8353                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8354                                tx_id: header.tx_id,
8355                            },
8356                        })
8357                    }
8358                    0x1dfb695351d3aa1d => {
8359                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8360                        let mut req = fidl::new_empty!(
8361                            SocketRecvMsgRequest,
8362                            fidl::encoding::DefaultFuchsiaResourceDialect
8363                        );
8364                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8365                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8366                        Ok(SocketRequest::RecvMsg {
8367                            want_addr: req.want_addr,
8368                            data_len: req.data_len,
8369                            want_control: req.want_control,
8370                            flags: req.flags,
8371
8372                            responder: SocketRecvMsgResponder {
8373                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8374                                tx_id: header.tx_id,
8375                            },
8376                        })
8377                    }
8378                    0x2cf1eac9a7fc8958 => {
8379                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8380                        let mut req = fidl::new_empty!(
8381                            SocketSendMsgRequest,
8382                            fidl::encoding::DefaultFuchsiaResourceDialect
8383                        );
8384                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8385                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8386                        Ok(SocketRequest::SendMsg {
8387                            addr: req.addr,
8388                            data: req.data,
8389                            control: req.control,
8390                            flags: req.flags,
8391
8392                            responder: SocketSendMsgResponder {
8393                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8394                                tx_id: header.tx_id,
8395                            },
8396                        })
8397                    }
8398                    0x39676f75aec339ba => {
8399                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8400                        let mut req = fidl::new_empty!(
8401                            fidl::encoding::EmptyPayload,
8402                            fidl::encoding::DefaultFuchsiaResourceDialect
8403                        );
8404                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8405                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8406                        Ok(SocketRequest::GetInfo {
8407                            responder: SocketGetInfoResponder {
8408                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8409                                tx_id: header.tx_id,
8410                            },
8411                        })
8412                    }
8413                    0x5d06a606d95e8f3 => {
8414                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8415                        let mut req = fidl::new_empty!(
8416                            SocketSetIpHeaderIncludedRequest,
8417                            fidl::encoding::DefaultFuchsiaResourceDialect
8418                        );
8419                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8420                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8421                        Ok(SocketRequest::SetIpHeaderIncluded {
8422                            value: req.value,
8423
8424                            responder: SocketSetIpHeaderIncludedResponder {
8425                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8426                                tx_id: header.tx_id,
8427                            },
8428                        })
8429                    }
8430                    0x76125ad1f4d175f6 => {
8431                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8432                        let mut req = fidl::new_empty!(
8433                            fidl::encoding::EmptyPayload,
8434                            fidl::encoding::DefaultFuchsiaResourceDialect
8435                        );
8436                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8437                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8438                        Ok(SocketRequest::GetIpHeaderIncluded {
8439                            responder: SocketGetIpHeaderIncludedResponder {
8440                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8441                                tx_id: header.tx_id,
8442                            },
8443                        })
8444                    }
8445                    0x4ebea92a43ae68a9 => {
8446                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8447                        let mut req = fidl::new_empty!(
8448                            SocketSetIcmpv6FilterRequest,
8449                            fidl::encoding::DefaultFuchsiaResourceDialect
8450                        );
8451                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8452                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8453                        Ok(SocketRequest::SetIcmpv6Filter {
8454                            filter: req.filter,
8455
8456                            responder: SocketSetIcmpv6FilterResponder {
8457                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8458                                tx_id: header.tx_id,
8459                            },
8460                        })
8461                    }
8462                    0x43bd4f3bc0970ace => {
8463                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8464                        let mut req = fidl::new_empty!(
8465                            fidl::encoding::EmptyPayload,
8466                            fidl::encoding::DefaultFuchsiaResourceDialect
8467                        );
8468                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8469                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8470                        Ok(SocketRequest::GetIcmpv6Filter {
8471                            responder: SocketGetIcmpv6FilterResponder {
8472                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8473                                tx_id: header.tx_id,
8474                            },
8475                        })
8476                    }
8477                    0x18b7809577199cb4 => {
8478                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8479                        let mut req = fidl::new_empty!(
8480                            SocketSetIpv6ChecksumRequest,
8481                            fidl::encoding::DefaultFuchsiaResourceDialect
8482                        );
8483                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8484                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8485                        Ok(SocketRequest::SetIpv6Checksum {
8486                            config: req.config,
8487
8488                            responder: SocketSetIpv6ChecksumResponder {
8489                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8490                                tx_id: header.tx_id,
8491                            },
8492                        })
8493                    }
8494                    0x1847bf5b2d263dd => {
8495                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8496                        let mut req = fidl::new_empty!(
8497                            fidl::encoding::EmptyPayload,
8498                            fidl::encoding::DefaultFuchsiaResourceDialect
8499                        );
8500                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8501                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8502                        Ok(SocketRequest::GetIpv6Checksum {
8503                            responder: SocketGetIpv6ChecksumResponder {
8504                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8505                                tx_id: header.tx_id,
8506                            },
8507                        })
8508                    }
8509                    _ => Err(fidl::Error::UnknownOrdinal {
8510                        ordinal: header.ordinal,
8511                        protocol_name:
8512                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8513                    }),
8514                }))
8515            },
8516        )
8517    }
8518}
8519
8520/// A raw network socket.
8521///
8522/// Once a socket has been retrieved from a provider, this interface is then
8523/// used to further configure and use the socket. This interface is essentially
8524/// POSIX.
8525///
8526/// All methods on this type are nonblocking; their exact behaviors match their
8527/// Linux counterparts.
8528///
8529/// *Warning:* This protocol is not yet ready for direct use by clients.
8530/// Instead, clients should use the BSD sockets API to interact with sockets.
8531/// We plan to change this protocol substantially and clients that couple
8532/// directly to this protocol will make those changes more difficult.
8533#[derive(Debug)]
8534pub enum SocketRequest {
8535    Clone {
8536        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8537        control_handle: SocketControlHandle,
8538    },
8539    /// Terminates the connection.
8540    ///
8541    /// After calling `Close`, the client must not send any other requests.
8542    ///
8543    /// Servers, after sending the status response, should close the connection
8544    /// regardless of status and without sending an epitaph.
8545    ///
8546    /// Closing the client end of the channel should be semantically equivalent
8547    /// to calling `Close` without knowing when the close has completed or its
8548    /// status.
8549    Close {
8550        responder: SocketCloseResponder,
8551    },
8552    Query {
8553        responder: SocketQueryResponder,
8554    },
8555    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8556    SetReuseAddress {
8557        value: bool,
8558        responder: SocketSetReuseAddressResponder,
8559    },
8560    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8561    GetReuseAddress {
8562        responder: SocketGetReuseAddressResponder,
8563    },
8564    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8565    /// Returns the last error if there is an error set on the socket.
8566    GetError {
8567        responder: SocketGetErrorResponder,
8568    },
8569    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8570    SetBroadcast {
8571        value: bool,
8572        responder: SocketSetBroadcastResponder,
8573    },
8574    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8575    GetBroadcast {
8576        responder: SocketGetBroadcastResponder,
8577    },
8578    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8579    SetSendBuffer {
8580        value_bytes: u64,
8581        responder: SocketSetSendBufferResponder,
8582    },
8583    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8584    GetSendBuffer {
8585        responder: SocketGetSendBufferResponder,
8586    },
8587    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8588    SetReceiveBuffer {
8589        value_bytes: u64,
8590        responder: SocketSetReceiveBufferResponder,
8591    },
8592    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8593    GetReceiveBuffer {
8594        responder: SocketGetReceiveBufferResponder,
8595    },
8596    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8597    SetKeepAlive {
8598        value: bool,
8599        responder: SocketSetKeepAliveResponder,
8600    },
8601    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8602    GetKeepAlive {
8603        responder: SocketGetKeepAliveResponder,
8604    },
8605    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8606    SetOutOfBandInline {
8607        value: bool,
8608        responder: SocketSetOutOfBandInlineResponder,
8609    },
8610    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8611    GetOutOfBandInline {
8612        responder: SocketGetOutOfBandInlineResponder,
8613    },
8614    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8615    SetNoCheck {
8616        value: bool,
8617        responder: SocketSetNoCheckResponder,
8618    },
8619    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8620    GetNoCheck {
8621        responder: SocketGetNoCheckResponder,
8622    },
8623    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8624    SetLinger {
8625        linger: bool,
8626        length_secs: u32,
8627        responder: SocketSetLingerResponder,
8628    },
8629    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8630    GetLinger {
8631        responder: SocketGetLingerResponder,
8632    },
8633    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8634    SetReusePort {
8635        value: fidl_fuchsia_posix_socket::ReusePortOption,
8636        responder: SocketSetReusePortResponder,
8637    },
8638    SetReusePortDeprecated {
8639        value: bool,
8640        responder: SocketSetReusePortDeprecatedResponder,
8641    },
8642    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8643    GetReusePort {
8644        responder: SocketGetReusePortResponder,
8645    },
8646    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8647    GetAcceptConn {
8648        responder: SocketGetAcceptConnResponder,
8649    },
8650    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8651    SetBindToDevice {
8652        value: String,
8653        responder: SocketSetBindToDeviceResponder,
8654    },
8655    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8656    GetBindToDevice {
8657        responder: SocketGetBindToDeviceResponder,
8658    },
8659    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8660    /// If `value` is 0, this clears the bound interface.
8661    SetBindToInterfaceIndex {
8662        value: u64,
8663        responder: SocketSetBindToInterfaceIndexResponder,
8664    },
8665    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8666    GetBindToInterfaceIndex {
8667        responder: SocketGetBindToInterfaceIndexResponder,
8668    },
8669    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8670    SetTimestamp {
8671        value: fidl_fuchsia_posix_socket::TimestampOption,
8672        responder: SocketSetTimestampResponder,
8673    },
8674    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8675    GetTimestamp {
8676        responder: SocketGetTimestampResponder,
8677    },
8678    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8679    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8680    /// mark can be set independently in each domain.
8681    SetMark {
8682        domain: fidl_fuchsia_net::MarkDomain,
8683        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8684        responder: SocketSetMarkResponder,
8685    },
8686    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8687    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8688    /// mark can be retrieved independently in each domain.
8689    GetMark {
8690        domain: fidl_fuchsia_net::MarkDomain,
8691        responder: SocketGetMarkResponder,
8692    },
8693    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
8694    GetCookie {
8695        responder: SocketGetCookieResponder,
8696    },
8697    /// Sets the local address used for the socket.
8698    Bind {
8699        addr: fidl_fuchsia_net::SocketAddress,
8700        responder: SocketBindResponder,
8701    },
8702    /// Initiates a connection to a remote address.
8703    Connect {
8704        addr: fidl_fuchsia_net::SocketAddress,
8705        responder: SocketConnectResponder,
8706    },
8707    /// Clears connection information from this socket.
8708    Disconnect {
8709        responder: SocketDisconnectResponder,
8710    },
8711    /// Retrieves the local socket address.
8712    GetSockName {
8713        responder: SocketGetSockNameResponder,
8714    },
8715    /// Retrieves the remote socket address.
8716    GetPeerName {
8717        responder: SocketGetPeerNameResponder,
8718    },
8719    /// Shuts down part of the socket.
8720    Shutdown {
8721        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8722        responder: SocketShutdownResponder,
8723    },
8724    /// Set `SOL_IP` -> `IP_TOS`.
8725    SetIpTypeOfService {
8726        value: u8,
8727        responder: SocketSetIpTypeOfServiceResponder,
8728    },
8729    /// Get `SOL_IP` -> `IP_TOS`.
8730    GetIpTypeOfService {
8731        responder: SocketGetIpTypeOfServiceResponder,
8732    },
8733    /// Set `SOL_IP` -> `IP_TTL`.
8734    SetIpTtl {
8735        value: fidl_fuchsia_posix_socket::OptionalUint8,
8736        responder: SocketSetIpTtlResponder,
8737    },
8738    /// Get `SOL_IP` -> `IP_TTL`.
8739    GetIpTtl {
8740        responder: SocketGetIpTtlResponder,
8741    },
8742    /// Set `SOL_IP` -> `IP_PKTINFO`.
8743    SetIpPacketInfo {
8744        value: bool,
8745        responder: SocketSetIpPacketInfoResponder,
8746    },
8747    /// Get `SOL_IP` -> `IP_PKTINFO`.
8748    GetIpPacketInfo {
8749        responder: SocketGetIpPacketInfoResponder,
8750    },
8751    /// Set `SOL_IP` -> `IP_RECVTOS`.
8752    SetIpReceiveTypeOfService {
8753        value: bool,
8754        responder: SocketSetIpReceiveTypeOfServiceResponder,
8755    },
8756    /// Get `SOL_IP` -> `IP_RECVTOS`.
8757    GetIpReceiveTypeOfService {
8758        responder: SocketGetIpReceiveTypeOfServiceResponder,
8759    },
8760    /// Set `SOL_IP` -> `IP_RECVTTL`.
8761    SetIpReceiveTtl {
8762        value: bool,
8763        responder: SocketSetIpReceiveTtlResponder,
8764    },
8765    /// Get `SOL_IP` -> `IP_RECVTTL`.
8766    GetIpReceiveTtl {
8767        responder: SocketGetIpReceiveTtlResponder,
8768    },
8769    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8770    SetIpMulticastInterface {
8771        iface: u64,
8772        address: fidl_fuchsia_net::Ipv4Address,
8773        responder: SocketSetIpMulticastInterfaceResponder,
8774    },
8775    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8776    GetIpMulticastInterface {
8777        responder: SocketGetIpMulticastInterfaceResponder,
8778    },
8779    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8780    SetIpMulticastTtl {
8781        value: fidl_fuchsia_posix_socket::OptionalUint8,
8782        responder: SocketSetIpMulticastTtlResponder,
8783    },
8784    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8785    GetIpMulticastTtl {
8786        responder: SocketGetIpMulticastTtlResponder,
8787    },
8788    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8789    SetIpMulticastLoopback {
8790        value: bool,
8791        responder: SocketSetIpMulticastLoopbackResponder,
8792    },
8793    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8794    GetIpMulticastLoopback {
8795        responder: SocketGetIpMulticastLoopbackResponder,
8796    },
8797    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8798    AddIpMembership {
8799        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8800        responder: SocketAddIpMembershipResponder,
8801    },
8802    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8803    DropIpMembership {
8804        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8805        responder: SocketDropIpMembershipResponder,
8806    },
8807    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8808    SetIpTransparent {
8809        value: bool,
8810        responder: SocketSetIpTransparentResponder,
8811    },
8812    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8813    GetIpTransparent {
8814        responder: SocketGetIpTransparentResponder,
8815    },
8816    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8817    SetIpReceiveOriginalDestinationAddress {
8818        value: bool,
8819        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8820    },
8821    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8822    GetIpReceiveOriginalDestinationAddress {
8823        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8824    },
8825    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8826    AddIpv6Membership {
8827        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8828        responder: SocketAddIpv6MembershipResponder,
8829    },
8830    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8831    DropIpv6Membership {
8832        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8833        responder: SocketDropIpv6MembershipResponder,
8834    },
8835    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8836    SetIpv6MulticastInterface {
8837        value: u64,
8838        responder: SocketSetIpv6MulticastInterfaceResponder,
8839    },
8840    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8841    GetIpv6MulticastInterface {
8842        responder: SocketGetIpv6MulticastInterfaceResponder,
8843    },
8844    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8845    SetIpv6UnicastHops {
8846        value: fidl_fuchsia_posix_socket::OptionalUint8,
8847        responder: SocketSetIpv6UnicastHopsResponder,
8848    },
8849    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8850    GetIpv6UnicastHops {
8851        responder: SocketGetIpv6UnicastHopsResponder,
8852    },
8853    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8854    SetIpv6ReceiveHopLimit {
8855        value: bool,
8856        responder: SocketSetIpv6ReceiveHopLimitResponder,
8857    },
8858    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8859    GetIpv6ReceiveHopLimit {
8860        responder: SocketGetIpv6ReceiveHopLimitResponder,
8861    },
8862    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8863    SetIpv6MulticastHops {
8864        value: fidl_fuchsia_posix_socket::OptionalUint8,
8865        responder: SocketSetIpv6MulticastHopsResponder,
8866    },
8867    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8868    GetIpv6MulticastHops {
8869        responder: SocketGetIpv6MulticastHopsResponder,
8870    },
8871    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8872    SetIpv6MulticastLoopback {
8873        value: bool,
8874        responder: SocketSetIpv6MulticastLoopbackResponder,
8875    },
8876    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8877    GetIpv6MulticastLoopback {
8878        responder: SocketGetIpv6MulticastLoopbackResponder,
8879    },
8880    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8881    SetIpv6Only {
8882        value: bool,
8883        responder: SocketSetIpv6OnlyResponder,
8884    },
8885    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8886    GetIpv6Only {
8887        responder: SocketGetIpv6OnlyResponder,
8888    },
8889    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8890    SetIpv6ReceiveTrafficClass {
8891        value: bool,
8892        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8893    },
8894    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8895    GetIpv6ReceiveTrafficClass {
8896        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8897    },
8898    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8899    SetIpv6TrafficClass {
8900        value: fidl_fuchsia_posix_socket::OptionalUint8,
8901        responder: SocketSetIpv6TrafficClassResponder,
8902    },
8903    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8904    GetIpv6TrafficClass {
8905        responder: SocketGetIpv6TrafficClassResponder,
8906    },
8907    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8908    SetIpv6ReceivePacketInfo {
8909        value: bool,
8910        responder: SocketSetIpv6ReceivePacketInfoResponder,
8911    },
8912    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8913    GetIpv6ReceivePacketInfo {
8914        responder: SocketGetIpv6ReceivePacketInfoResponder,
8915    },
8916    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8917    GetOriginalDestination {
8918        responder: SocketGetOriginalDestinationResponder,
8919    },
8920    Describe {
8921        responder: SocketDescribeResponder,
8922    },
8923    /// Receives a message from the socket.
8924    ///
8925    /// + request `want_addr` request message's source address information to
8926    ///   be returned.
8927    /// + request `data_len` the maximum allowed length of the response data
8928    ///   buffer.
8929    /// + request `want_control` request ancillary data to be returned.
8930    /// + request `flags` flags for the receive request.
8931    /// - response `addr` the message's source address information, if
8932    ///   requested.
8933    /// - response `data` the message.
8934    /// - response `control` control messages, if requested.
8935    /// - response `truncated` indicates whether or not the returned message
8936    ///   was truncated.
8937    RecvMsg {
8938        want_addr: bool,
8939        data_len: u32,
8940        want_control: bool,
8941        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8942        responder: SocketRecvMsgResponder,
8943    },
8944    /// Sends a message on the socket.
8945    ///
8946    /// + request `addr` the address to send the message to. If unset, will
8947    ///   send to the connected peer.
8948    /// + request `data` the message.
8949    /// + request `control` ancillary data.
8950    /// + request `flags` flags for the send request.
8951    SendMsg {
8952        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8953        data: Vec<u8>,
8954        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8955        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8956        responder: SocketSendMsgResponder,
8957    },
8958    /// Retrieves creation information from the socket.
8959    ///
8960    /// - response `domain` the socket's associated domain.
8961    /// - response `proto` the socket's associated protocol.
8962    GetInfo {
8963        responder: SocketGetInfoResponder,
8964    },
8965    /// Set `SOL_IP` -> `IP_HDRINCL`.
8966    SetIpHeaderIncluded {
8967        value: bool,
8968        responder: SocketSetIpHeaderIncludedResponder,
8969    },
8970    /// Get `SOL_IP` -> `IP_HDRINCL`.
8971    GetIpHeaderIncluded {
8972        responder: SocketGetIpHeaderIncludedResponder,
8973    },
8974    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8975    SetIcmpv6Filter {
8976        filter: Icmpv6Filter,
8977        responder: SocketSetIcmpv6FilterResponder,
8978    },
8979    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8980    GetIcmpv6Filter {
8981        responder: SocketGetIcmpv6FilterResponder,
8982    },
8983    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8984    SetIpv6Checksum {
8985        config: Ipv6ChecksumConfiguration,
8986        responder: SocketSetIpv6ChecksumResponder,
8987    },
8988    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8989    GetIpv6Checksum {
8990        responder: SocketGetIpv6ChecksumResponder,
8991    },
8992}
8993
8994impl SocketRequest {
8995    #[allow(irrefutable_let_patterns)]
8996    pub fn into_clone(
8997        self,
8998    ) -> Option<(
8999        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9000        SocketControlHandle,
9001    )> {
9002        if let SocketRequest::Clone { request, control_handle } = self {
9003            Some((request, control_handle))
9004        } else {
9005            None
9006        }
9007    }
9008
9009    #[allow(irrefutable_let_patterns)]
9010    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
9011        if let SocketRequest::Close { responder } = self { Some((responder)) } else { None }
9012    }
9013
9014    #[allow(irrefutable_let_patterns)]
9015    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
9016        if let SocketRequest::Query { responder } = self { Some((responder)) } else { None }
9017    }
9018
9019    #[allow(irrefutable_let_patterns)]
9020    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
9021        if let SocketRequest::SetReuseAddress { value, responder } = self {
9022            Some((value, responder))
9023        } else {
9024            None
9025        }
9026    }
9027
9028    #[allow(irrefutable_let_patterns)]
9029    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
9030        if let SocketRequest::GetReuseAddress { responder } = self {
9031            Some((responder))
9032        } else {
9033            None
9034        }
9035    }
9036
9037    #[allow(irrefutable_let_patterns)]
9038    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
9039        if let SocketRequest::GetError { responder } = self { Some((responder)) } else { None }
9040    }
9041
9042    #[allow(irrefutable_let_patterns)]
9043    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
9044        if let SocketRequest::SetBroadcast { value, responder } = self {
9045            Some((value, responder))
9046        } else {
9047            None
9048        }
9049    }
9050
9051    #[allow(irrefutable_let_patterns)]
9052    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
9053        if let SocketRequest::GetBroadcast { responder } = self { Some((responder)) } else { None }
9054    }
9055
9056    #[allow(irrefutable_let_patterns)]
9057    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
9058        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
9059            Some((value_bytes, responder))
9060        } else {
9061            None
9062        }
9063    }
9064
9065    #[allow(irrefutable_let_patterns)]
9066    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
9067        if let SocketRequest::GetSendBuffer { responder } = self { Some((responder)) } else { None }
9068    }
9069
9070    #[allow(irrefutable_let_patterns)]
9071    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
9072        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
9073            Some((value_bytes, responder))
9074        } else {
9075            None
9076        }
9077    }
9078
9079    #[allow(irrefutable_let_patterns)]
9080    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
9081        if let SocketRequest::GetReceiveBuffer { responder } = self {
9082            Some((responder))
9083        } else {
9084            None
9085        }
9086    }
9087
9088    #[allow(irrefutable_let_patterns)]
9089    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
9090        if let SocketRequest::SetKeepAlive { value, responder } = self {
9091            Some((value, responder))
9092        } else {
9093            None
9094        }
9095    }
9096
9097    #[allow(irrefutable_let_patterns)]
9098    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
9099        if let SocketRequest::GetKeepAlive { responder } = self { Some((responder)) } else { None }
9100    }
9101
9102    #[allow(irrefutable_let_patterns)]
9103    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
9104        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
9105            Some((value, responder))
9106        } else {
9107            None
9108        }
9109    }
9110
9111    #[allow(irrefutable_let_patterns)]
9112    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
9113        if let SocketRequest::GetOutOfBandInline { responder } = self {
9114            Some((responder))
9115        } else {
9116            None
9117        }
9118    }
9119
9120    #[allow(irrefutable_let_patterns)]
9121    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
9122        if let SocketRequest::SetNoCheck { value, responder } = self {
9123            Some((value, responder))
9124        } else {
9125            None
9126        }
9127    }
9128
9129    #[allow(irrefutable_let_patterns)]
9130    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
9131        if let SocketRequest::GetNoCheck { responder } = self { Some((responder)) } else { None }
9132    }
9133
9134    #[allow(irrefutable_let_patterns)]
9135    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
9136        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
9137            Some((linger, length_secs, responder))
9138        } else {
9139            None
9140        }
9141    }
9142
9143    #[allow(irrefutable_let_patterns)]
9144    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
9145        if let SocketRequest::GetLinger { responder } = self { Some((responder)) } else { None }
9146    }
9147
9148    #[allow(irrefutable_let_patterns)]
9149    pub fn into_set_reuse_port(
9150        self,
9151    ) -> Option<(fidl_fuchsia_posix_socket::ReusePortOption, SocketSetReusePortResponder)> {
9152        if let SocketRequest::SetReusePort { value, responder } = self {
9153            Some((value, responder))
9154        } else {
9155            None
9156        }
9157    }
9158
9159    #[allow(irrefutable_let_patterns)]
9160    pub fn into_set_reuse_port_deprecated(
9161        self,
9162    ) -> Option<(bool, SocketSetReusePortDeprecatedResponder)> {
9163        if let SocketRequest::SetReusePortDeprecated { value, responder } = self {
9164            Some((value, responder))
9165        } else {
9166            None
9167        }
9168    }
9169
9170    #[allow(irrefutable_let_patterns)]
9171    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
9172        if let SocketRequest::GetReusePort { responder } = self { Some((responder)) } else { None }
9173    }
9174
9175    #[allow(irrefutable_let_patterns)]
9176    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
9177        if let SocketRequest::GetAcceptConn { responder } = self { Some((responder)) } else { None }
9178    }
9179
9180    #[allow(irrefutable_let_patterns)]
9181    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
9182        if let SocketRequest::SetBindToDevice { value, responder } = self {
9183            Some((value, responder))
9184        } else {
9185            None
9186        }
9187    }
9188
9189    #[allow(irrefutable_let_patterns)]
9190    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
9191        if let SocketRequest::GetBindToDevice { responder } = self {
9192            Some((responder))
9193        } else {
9194            None
9195        }
9196    }
9197
9198    #[allow(irrefutable_let_patterns)]
9199    pub fn into_set_bind_to_interface_index(
9200        self,
9201    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
9202        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
9203            Some((value, responder))
9204        } else {
9205            None
9206        }
9207    }
9208
9209    #[allow(irrefutable_let_patterns)]
9210    pub fn into_get_bind_to_interface_index(
9211        self,
9212    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
9213        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
9214            Some((responder))
9215        } else {
9216            None
9217        }
9218    }
9219
9220    #[allow(irrefutable_let_patterns)]
9221    pub fn into_set_timestamp(
9222        self,
9223    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
9224        if let SocketRequest::SetTimestamp { value, responder } = self {
9225            Some((value, responder))
9226        } else {
9227            None
9228        }
9229    }
9230
9231    #[allow(irrefutable_let_patterns)]
9232    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9233        if let SocketRequest::GetTimestamp { responder } = self { Some((responder)) } else { None }
9234    }
9235
9236    #[allow(irrefutable_let_patterns)]
9237    pub fn into_set_mark(
9238        self,
9239    ) -> Option<(
9240        fidl_fuchsia_net::MarkDomain,
9241        fidl_fuchsia_posix_socket::OptionalUint32,
9242        SocketSetMarkResponder,
9243    )> {
9244        if let SocketRequest::SetMark { domain, mark, responder } = self {
9245            Some((domain, mark, responder))
9246        } else {
9247            None
9248        }
9249    }
9250
9251    #[allow(irrefutable_let_patterns)]
9252    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9253        if let SocketRequest::GetMark { domain, responder } = self {
9254            Some((domain, responder))
9255        } else {
9256            None
9257        }
9258    }
9259
9260    #[allow(irrefutable_let_patterns)]
9261    pub fn into_get_cookie(self) -> Option<(SocketGetCookieResponder)> {
9262        if let SocketRequest::GetCookie { responder } = self { Some((responder)) } else { None }
9263    }
9264
9265    #[allow(irrefutable_let_patterns)]
9266    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9267        if let SocketRequest::Bind { addr, responder } = self {
9268            Some((addr, responder))
9269        } else {
9270            None
9271        }
9272    }
9273
9274    #[allow(irrefutable_let_patterns)]
9275    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9276        if let SocketRequest::Connect { addr, responder } = self {
9277            Some((addr, responder))
9278        } else {
9279            None
9280        }
9281    }
9282
9283    #[allow(irrefutable_let_patterns)]
9284    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9285        if let SocketRequest::Disconnect { responder } = self { Some((responder)) } else { None }
9286    }
9287
9288    #[allow(irrefutable_let_patterns)]
9289    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9290        if let SocketRequest::GetSockName { responder } = self { Some((responder)) } else { None }
9291    }
9292
9293    #[allow(irrefutable_let_patterns)]
9294    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9295        if let SocketRequest::GetPeerName { responder } = self { Some((responder)) } else { None }
9296    }
9297
9298    #[allow(irrefutable_let_patterns)]
9299    pub fn into_shutdown(
9300        self,
9301    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9302        if let SocketRequest::Shutdown { mode, responder } = self {
9303            Some((mode, responder))
9304        } else {
9305            None
9306        }
9307    }
9308
9309    #[allow(irrefutable_let_patterns)]
9310    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9311        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9312            Some((value, responder))
9313        } else {
9314            None
9315        }
9316    }
9317
9318    #[allow(irrefutable_let_patterns)]
9319    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9320        if let SocketRequest::GetIpTypeOfService { responder } = self {
9321            Some((responder))
9322        } else {
9323            None
9324        }
9325    }
9326
9327    #[allow(irrefutable_let_patterns)]
9328    pub fn into_set_ip_ttl(
9329        self,
9330    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9331        if let SocketRequest::SetIpTtl { value, responder } = self {
9332            Some((value, responder))
9333        } else {
9334            None
9335        }
9336    }
9337
9338    #[allow(irrefutable_let_patterns)]
9339    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9340        if let SocketRequest::GetIpTtl { responder } = self { Some((responder)) } else { None }
9341    }
9342
9343    #[allow(irrefutable_let_patterns)]
9344    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9345        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9346            Some((value, responder))
9347        } else {
9348            None
9349        }
9350    }
9351
9352    #[allow(irrefutable_let_patterns)]
9353    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9354        if let SocketRequest::GetIpPacketInfo { responder } = self {
9355            Some((responder))
9356        } else {
9357            None
9358        }
9359    }
9360
9361    #[allow(irrefutable_let_patterns)]
9362    pub fn into_set_ip_receive_type_of_service(
9363        self,
9364    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9365        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9366            Some((value, responder))
9367        } else {
9368            None
9369        }
9370    }
9371
9372    #[allow(irrefutable_let_patterns)]
9373    pub fn into_get_ip_receive_type_of_service(
9374        self,
9375    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9376        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9377            Some((responder))
9378        } else {
9379            None
9380        }
9381    }
9382
9383    #[allow(irrefutable_let_patterns)]
9384    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9385        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9386            Some((value, responder))
9387        } else {
9388            None
9389        }
9390    }
9391
9392    #[allow(irrefutable_let_patterns)]
9393    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9394        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9395            Some((responder))
9396        } else {
9397            None
9398        }
9399    }
9400
9401    #[allow(irrefutable_let_patterns)]
9402    pub fn into_set_ip_multicast_interface(
9403        self,
9404    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9405        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9406            Some((iface, address, responder))
9407        } else {
9408            None
9409        }
9410    }
9411
9412    #[allow(irrefutable_let_patterns)]
9413    pub fn into_get_ip_multicast_interface(
9414        self,
9415    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9416        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9417            Some((responder))
9418        } else {
9419            None
9420        }
9421    }
9422
9423    #[allow(irrefutable_let_patterns)]
9424    pub fn into_set_ip_multicast_ttl(
9425        self,
9426    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9427        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9428            Some((value, responder))
9429        } else {
9430            None
9431        }
9432    }
9433
9434    #[allow(irrefutable_let_patterns)]
9435    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9436        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9437            Some((responder))
9438        } else {
9439            None
9440        }
9441    }
9442
9443    #[allow(irrefutable_let_patterns)]
9444    pub fn into_set_ip_multicast_loopback(
9445        self,
9446    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9447        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9448            Some((value, responder))
9449        } else {
9450            None
9451        }
9452    }
9453
9454    #[allow(irrefutable_let_patterns)]
9455    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9456        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9457            Some((responder))
9458        } else {
9459            None
9460        }
9461    }
9462
9463    #[allow(irrefutable_let_patterns)]
9464    pub fn into_add_ip_membership(
9465        self,
9466    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9467    {
9468        if let SocketRequest::AddIpMembership { membership, responder } = self {
9469            Some((membership, responder))
9470        } else {
9471            None
9472        }
9473    }
9474
9475    #[allow(irrefutable_let_patterns)]
9476    pub fn into_drop_ip_membership(
9477        self,
9478    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9479    {
9480        if let SocketRequest::DropIpMembership { membership, responder } = self {
9481            Some((membership, responder))
9482        } else {
9483            None
9484        }
9485    }
9486
9487    #[allow(irrefutable_let_patterns)]
9488    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9489        if let SocketRequest::SetIpTransparent { value, responder } = self {
9490            Some((value, responder))
9491        } else {
9492            None
9493        }
9494    }
9495
9496    #[allow(irrefutable_let_patterns)]
9497    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9498        if let SocketRequest::GetIpTransparent { responder } = self {
9499            Some((responder))
9500        } else {
9501            None
9502        }
9503    }
9504
9505    #[allow(irrefutable_let_patterns)]
9506    pub fn into_set_ip_receive_original_destination_address(
9507        self,
9508    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9509        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9510            Some((value, responder))
9511        } else {
9512            None
9513        }
9514    }
9515
9516    #[allow(irrefutable_let_patterns)]
9517    pub fn into_get_ip_receive_original_destination_address(
9518        self,
9519    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9520        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9521            Some((responder))
9522        } else {
9523            None
9524        }
9525    }
9526
9527    #[allow(irrefutable_let_patterns)]
9528    pub fn into_add_ipv6_membership(
9529        self,
9530    ) -> Option<(
9531        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9532        SocketAddIpv6MembershipResponder,
9533    )> {
9534        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9535            Some((membership, responder))
9536        } else {
9537            None
9538        }
9539    }
9540
9541    #[allow(irrefutable_let_patterns)]
9542    pub fn into_drop_ipv6_membership(
9543        self,
9544    ) -> Option<(
9545        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9546        SocketDropIpv6MembershipResponder,
9547    )> {
9548        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9549            Some((membership, responder))
9550        } else {
9551            None
9552        }
9553    }
9554
9555    #[allow(irrefutable_let_patterns)]
9556    pub fn into_set_ipv6_multicast_interface(
9557        self,
9558    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9559        if let SocketRequest::SetIpv6MulticastInterface { value, responder } = self {
9560            Some((value, responder))
9561        } else {
9562            None
9563        }
9564    }
9565
9566    #[allow(irrefutable_let_patterns)]
9567    pub fn into_get_ipv6_multicast_interface(
9568        self,
9569    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9570        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9571            Some((responder))
9572        } else {
9573            None
9574        }
9575    }
9576
9577    #[allow(irrefutable_let_patterns)]
9578    pub fn into_set_ipv6_unicast_hops(
9579        self,
9580    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9581        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9582            Some((value, responder))
9583        } else {
9584            None
9585        }
9586    }
9587
9588    #[allow(irrefutable_let_patterns)]
9589    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9590        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9591            Some((responder))
9592        } else {
9593            None
9594        }
9595    }
9596
9597    #[allow(irrefutable_let_patterns)]
9598    pub fn into_set_ipv6_receive_hop_limit(
9599        self,
9600    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9601        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9602            Some((value, responder))
9603        } else {
9604            None
9605        }
9606    }
9607
9608    #[allow(irrefutable_let_patterns)]
9609    pub fn into_get_ipv6_receive_hop_limit(
9610        self,
9611    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9612        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9613            Some((responder))
9614        } else {
9615            None
9616        }
9617    }
9618
9619    #[allow(irrefutable_let_patterns)]
9620    pub fn into_set_ipv6_multicast_hops(
9621        self,
9622    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9623    {
9624        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9625            Some((value, responder))
9626        } else {
9627            None
9628        }
9629    }
9630
9631    #[allow(irrefutable_let_patterns)]
9632    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9633        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9634            Some((responder))
9635        } else {
9636            None
9637        }
9638    }
9639
9640    #[allow(irrefutable_let_patterns)]
9641    pub fn into_set_ipv6_multicast_loopback(
9642        self,
9643    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9644        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9645            Some((value, responder))
9646        } else {
9647            None
9648        }
9649    }
9650
9651    #[allow(irrefutable_let_patterns)]
9652    pub fn into_get_ipv6_multicast_loopback(
9653        self,
9654    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9655        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9656            Some((responder))
9657        } else {
9658            None
9659        }
9660    }
9661
9662    #[allow(irrefutable_let_patterns)]
9663    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9664        if let SocketRequest::SetIpv6Only { value, responder } = self {
9665            Some((value, responder))
9666        } else {
9667            None
9668        }
9669    }
9670
9671    #[allow(irrefutable_let_patterns)]
9672    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9673        if let SocketRequest::GetIpv6Only { responder } = self { Some((responder)) } else { None }
9674    }
9675
9676    #[allow(irrefutable_let_patterns)]
9677    pub fn into_set_ipv6_receive_traffic_class(
9678        self,
9679    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9680        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9681            Some((value, responder))
9682        } else {
9683            None
9684        }
9685    }
9686
9687    #[allow(irrefutable_let_patterns)]
9688    pub fn into_get_ipv6_receive_traffic_class(
9689        self,
9690    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9691        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9692            Some((responder))
9693        } else {
9694            None
9695        }
9696    }
9697
9698    #[allow(irrefutable_let_patterns)]
9699    pub fn into_set_ipv6_traffic_class(
9700        self,
9701    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9702    {
9703        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9704            Some((value, responder))
9705        } else {
9706            None
9707        }
9708    }
9709
9710    #[allow(irrefutable_let_patterns)]
9711    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9712        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9713            Some((responder))
9714        } else {
9715            None
9716        }
9717    }
9718
9719    #[allow(irrefutable_let_patterns)]
9720    pub fn into_set_ipv6_receive_packet_info(
9721        self,
9722    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9723        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9724            Some((value, responder))
9725        } else {
9726            None
9727        }
9728    }
9729
9730    #[allow(irrefutable_let_patterns)]
9731    pub fn into_get_ipv6_receive_packet_info(
9732        self,
9733    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9734        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9735            Some((responder))
9736        } else {
9737            None
9738        }
9739    }
9740
9741    #[allow(irrefutable_let_patterns)]
9742    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9743        if let SocketRequest::GetOriginalDestination { responder } = self {
9744            Some((responder))
9745        } else {
9746            None
9747        }
9748    }
9749
9750    #[allow(irrefutable_let_patterns)]
9751    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9752        if let SocketRequest::Describe { responder } = self { Some((responder)) } else { None }
9753    }
9754
9755    #[allow(irrefutable_let_patterns)]
9756    pub fn into_recv_msg(
9757        self,
9758    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9759    {
9760        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9761        {
9762            Some((want_addr, data_len, want_control, flags, responder))
9763        } else {
9764            None
9765        }
9766    }
9767
9768    #[allow(irrefutable_let_patterns)]
9769    pub fn into_send_msg(
9770        self,
9771    ) -> Option<(
9772        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9773        Vec<u8>,
9774        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9775        fidl_fuchsia_posix_socket::SendMsgFlags,
9776        SocketSendMsgResponder,
9777    )> {
9778        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9779            Some((addr, data, control, flags, responder))
9780        } else {
9781            None
9782        }
9783    }
9784
9785    #[allow(irrefutable_let_patterns)]
9786    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9787        if let SocketRequest::GetInfo { responder } = self { Some((responder)) } else { None }
9788    }
9789
9790    #[allow(irrefutable_let_patterns)]
9791    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9792        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9793            Some((value, responder))
9794        } else {
9795            None
9796        }
9797    }
9798
9799    #[allow(irrefutable_let_patterns)]
9800    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9801        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9802            Some((responder))
9803        } else {
9804            None
9805        }
9806    }
9807
9808    #[allow(irrefutable_let_patterns)]
9809    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9810        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9811            Some((filter, responder))
9812        } else {
9813            None
9814        }
9815    }
9816
9817    #[allow(irrefutable_let_patterns)]
9818    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9819        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9820            Some((responder))
9821        } else {
9822            None
9823        }
9824    }
9825
9826    #[allow(irrefutable_let_patterns)]
9827    pub fn into_set_ipv6_checksum(
9828        self,
9829    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9830        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9831            Some((config, responder))
9832        } else {
9833            None
9834        }
9835    }
9836
9837    #[allow(irrefutable_let_patterns)]
9838    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9839        if let SocketRequest::GetIpv6Checksum { responder } = self {
9840            Some((responder))
9841        } else {
9842            None
9843        }
9844    }
9845
9846    /// Name of the method defined in FIDL
9847    pub fn method_name(&self) -> &'static str {
9848        match *self {
9849            SocketRequest::Clone { .. } => "clone",
9850            SocketRequest::Close { .. } => "close",
9851            SocketRequest::Query { .. } => "query",
9852            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9853            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9854            SocketRequest::GetError { .. } => "get_error",
9855            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9856            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9857            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9858            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9859            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9860            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9861            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9862            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9863            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9864            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9865            SocketRequest::SetNoCheck { .. } => "set_no_check",
9866            SocketRequest::GetNoCheck { .. } => "get_no_check",
9867            SocketRequest::SetLinger { .. } => "set_linger",
9868            SocketRequest::GetLinger { .. } => "get_linger",
9869            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9870            SocketRequest::SetReusePortDeprecated { .. } => "set_reuse_port_deprecated",
9871            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9872            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9873            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9874            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9875            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9876            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9877            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9878            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9879            SocketRequest::SetMark { .. } => "set_mark",
9880            SocketRequest::GetMark { .. } => "get_mark",
9881            SocketRequest::GetCookie { .. } => "get_cookie",
9882            SocketRequest::Bind { .. } => "bind",
9883            SocketRequest::Connect { .. } => "connect",
9884            SocketRequest::Disconnect { .. } => "disconnect",
9885            SocketRequest::GetSockName { .. } => "get_sock_name",
9886            SocketRequest::GetPeerName { .. } => "get_peer_name",
9887            SocketRequest::Shutdown { .. } => "shutdown",
9888            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9889            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9890            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9891            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9892            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9893            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9894            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9895            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9896            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9897            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9898            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9899            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9900            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9901            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9902            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9903            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9904            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9905            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9906            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9907            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9908            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9909                "set_ip_receive_original_destination_address"
9910            }
9911            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9912                "get_ip_receive_original_destination_address"
9913            }
9914            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9915            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9916            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9917            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9918            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9919            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9920            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9921            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9922            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9923            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9924            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9925            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9926            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9927            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9928            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9929            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9930            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9931            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9932            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9933            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9934            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9935            SocketRequest::Describe { .. } => "describe",
9936            SocketRequest::RecvMsg { .. } => "recv_msg",
9937            SocketRequest::SendMsg { .. } => "send_msg",
9938            SocketRequest::GetInfo { .. } => "get_info",
9939            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9940            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9941            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9942            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9943            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9944            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9945        }
9946    }
9947}
9948
9949#[derive(Debug, Clone)]
9950pub struct SocketControlHandle {
9951    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9952}
9953
9954impl SocketControlHandle {
9955    pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
9956        self.inner.shutdown_with_epitaph(status.into())
9957    }
9958}
9959
9960impl fidl::endpoints::ControlHandle for SocketControlHandle {
9961    fn shutdown(&self) {
9962        self.inner.shutdown()
9963    }
9964
9965    fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
9966        self.inner.shutdown_with_epitaph(status)
9967    }
9968
9969    fn is_closed(&self) -> bool {
9970        self.inner.channel().is_closed()
9971    }
9972    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9973        self.inner.channel().on_closed()
9974    }
9975
9976    #[cfg(target_os = "fuchsia")]
9977    fn signal_peer(
9978        &self,
9979        clear_mask: zx::Signals,
9980        set_mask: zx::Signals,
9981    ) -> Result<(), zx_status::Status> {
9982        use fidl::Peered;
9983        self.inner.channel().signal_peer(clear_mask, set_mask)
9984    }
9985}
9986
9987impl SocketControlHandle {}
9988
9989#[must_use = "FIDL methods require a response to be sent"]
9990#[derive(Debug)]
9991pub struct SocketCloseResponder {
9992    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9993    tx_id: u32,
9994}
9995
9996/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9997/// if the responder is dropped without sending a response, so that the client
9998/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9999impl std::ops::Drop for SocketCloseResponder {
10000    fn drop(&mut self) {
10001        self.control_handle.shutdown();
10002        // Safety: drops once, never accessed again
10003        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10004    }
10005}
10006
10007impl fidl::endpoints::Responder for SocketCloseResponder {
10008    type ControlHandle = SocketControlHandle;
10009
10010    fn control_handle(&self) -> &SocketControlHandle {
10011        &self.control_handle
10012    }
10013
10014    fn drop_without_shutdown(mut self) {
10015        // Safety: drops once, never accessed again due to mem::forget
10016        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10017        // Prevent Drop from running (which would shut down the channel)
10018        std::mem::forget(self);
10019    }
10020}
10021
10022impl SocketCloseResponder {
10023    /// Sends a response to the FIDL transaction.
10024    ///
10025    /// Sets the channel to shutdown if an error occurs.
10026    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
10027        let _result = self.send_raw(result);
10028        if _result.is_err() {
10029            self.control_handle.shutdown();
10030        }
10031        self.drop_without_shutdown();
10032        _result
10033    }
10034
10035    /// Similar to "send" but does not shutdown the channel if an error occurs.
10036    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
10037        let _result = self.send_raw(result);
10038        self.drop_without_shutdown();
10039        _result
10040    }
10041
10042    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
10043        self.control_handle
10044            .inner
10045            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
10046                result,
10047                self.tx_id,
10048                0x5ac5d459ad7f657e,
10049                fidl::encoding::DynamicFlags::empty(),
10050            )
10051    }
10052}
10053
10054#[must_use = "FIDL methods require a response to be sent"]
10055#[derive(Debug)]
10056pub struct SocketQueryResponder {
10057    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10058    tx_id: u32,
10059}
10060
10061/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10062/// if the responder is dropped without sending a response, so that the client
10063/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10064impl std::ops::Drop for SocketQueryResponder {
10065    fn drop(&mut self) {
10066        self.control_handle.shutdown();
10067        // Safety: drops once, never accessed again
10068        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10069    }
10070}
10071
10072impl fidl::endpoints::Responder for SocketQueryResponder {
10073    type ControlHandle = SocketControlHandle;
10074
10075    fn control_handle(&self) -> &SocketControlHandle {
10076        &self.control_handle
10077    }
10078
10079    fn drop_without_shutdown(mut self) {
10080        // Safety: drops once, never accessed again due to mem::forget
10081        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10082        // Prevent Drop from running (which would shut down the channel)
10083        std::mem::forget(self);
10084    }
10085}
10086
10087impl SocketQueryResponder {
10088    /// Sends a response to the FIDL transaction.
10089    ///
10090    /// Sets the channel to shutdown if an error occurs.
10091    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
10092        let _result = self.send_raw(protocol);
10093        if _result.is_err() {
10094            self.control_handle.shutdown();
10095        }
10096        self.drop_without_shutdown();
10097        _result
10098    }
10099
10100    /// Similar to "send" but does not shutdown the channel if an error occurs.
10101    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
10102        let _result = self.send_raw(protocol);
10103        self.drop_without_shutdown();
10104        _result
10105    }
10106
10107    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
10108        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
10109            (protocol,),
10110            self.tx_id,
10111            0x2658edee9decfc06,
10112            fidl::encoding::DynamicFlags::empty(),
10113        )
10114    }
10115}
10116
10117#[must_use = "FIDL methods require a response to be sent"]
10118#[derive(Debug)]
10119pub struct SocketSetReuseAddressResponder {
10120    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10121    tx_id: u32,
10122}
10123
10124/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10125/// if the responder is dropped without sending a response, so that the client
10126/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10127impl std::ops::Drop for SocketSetReuseAddressResponder {
10128    fn drop(&mut self) {
10129        self.control_handle.shutdown();
10130        // Safety: drops once, never accessed again
10131        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10132    }
10133}
10134
10135impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
10136    type ControlHandle = SocketControlHandle;
10137
10138    fn control_handle(&self) -> &SocketControlHandle {
10139        &self.control_handle
10140    }
10141
10142    fn drop_without_shutdown(mut self) {
10143        // Safety: drops once, never accessed again due to mem::forget
10144        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10145        // Prevent Drop from running (which would shut down the channel)
10146        std::mem::forget(self);
10147    }
10148}
10149
10150impl SocketSetReuseAddressResponder {
10151    /// Sends a response to the FIDL transaction.
10152    ///
10153    /// Sets the channel to shutdown if an error occurs.
10154    pub fn send(
10155        self,
10156        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10157    ) -> Result<(), fidl::Error> {
10158        let _result = self.send_raw(result);
10159        if _result.is_err() {
10160            self.control_handle.shutdown();
10161        }
10162        self.drop_without_shutdown();
10163        _result
10164    }
10165
10166    /// Similar to "send" but does not shutdown the channel if an error occurs.
10167    pub fn send_no_shutdown_on_err(
10168        self,
10169        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10170    ) -> Result<(), fidl::Error> {
10171        let _result = self.send_raw(result);
10172        self.drop_without_shutdown();
10173        _result
10174    }
10175
10176    fn send_raw(
10177        &self,
10178        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10179    ) -> Result<(), fidl::Error> {
10180        self.control_handle.inner.send::<fidl::encoding::ResultType<
10181            fidl::encoding::EmptyStruct,
10182            fidl_fuchsia_posix::Errno,
10183        >>(
10184            result,
10185            self.tx_id,
10186            0x1fd74ee8b9a4a876,
10187            fidl::encoding::DynamicFlags::empty(),
10188        )
10189    }
10190}
10191
10192#[must_use = "FIDL methods require a response to be sent"]
10193#[derive(Debug)]
10194pub struct SocketGetReuseAddressResponder {
10195    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10196    tx_id: u32,
10197}
10198
10199/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10200/// if the responder is dropped without sending a response, so that the client
10201/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10202impl std::ops::Drop for SocketGetReuseAddressResponder {
10203    fn drop(&mut self) {
10204        self.control_handle.shutdown();
10205        // Safety: drops once, never accessed again
10206        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10207    }
10208}
10209
10210impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
10211    type ControlHandle = SocketControlHandle;
10212
10213    fn control_handle(&self) -> &SocketControlHandle {
10214        &self.control_handle
10215    }
10216
10217    fn drop_without_shutdown(mut self) {
10218        // Safety: drops once, never accessed again due to mem::forget
10219        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10220        // Prevent Drop from running (which would shut down the channel)
10221        std::mem::forget(self);
10222    }
10223}
10224
10225impl SocketGetReuseAddressResponder {
10226    /// Sends a response to the FIDL transaction.
10227    ///
10228    /// Sets the channel to shutdown if an error occurs.
10229    pub fn send(
10230        self,
10231        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10232    ) -> Result<(), fidl::Error> {
10233        let _result = self.send_raw(result);
10234        if _result.is_err() {
10235            self.control_handle.shutdown();
10236        }
10237        self.drop_without_shutdown();
10238        _result
10239    }
10240
10241    /// Similar to "send" but does not shutdown the channel if an error occurs.
10242    pub fn send_no_shutdown_on_err(
10243        self,
10244        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10245    ) -> Result<(), fidl::Error> {
10246        let _result = self.send_raw(result);
10247        self.drop_without_shutdown();
10248        _result
10249    }
10250
10251    fn send_raw(
10252        &self,
10253        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10254    ) -> Result<(), fidl::Error> {
10255        self.control_handle.inner.send::<fidl::encoding::ResultType<
10256            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10257            fidl_fuchsia_posix::Errno,
10258        >>(
10259            result.map(|value| (value,)),
10260            self.tx_id,
10261            0x67b7206b8d1bc0a5,
10262            fidl::encoding::DynamicFlags::empty(),
10263        )
10264    }
10265}
10266
10267#[must_use = "FIDL methods require a response to be sent"]
10268#[derive(Debug)]
10269pub struct SocketGetErrorResponder {
10270    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10271    tx_id: u32,
10272}
10273
10274/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10275/// if the responder is dropped without sending a response, so that the client
10276/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10277impl std::ops::Drop for SocketGetErrorResponder {
10278    fn drop(&mut self) {
10279        self.control_handle.shutdown();
10280        // Safety: drops once, never accessed again
10281        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10282    }
10283}
10284
10285impl fidl::endpoints::Responder for SocketGetErrorResponder {
10286    type ControlHandle = SocketControlHandle;
10287
10288    fn control_handle(&self) -> &SocketControlHandle {
10289        &self.control_handle
10290    }
10291
10292    fn drop_without_shutdown(mut self) {
10293        // Safety: drops once, never accessed again due to mem::forget
10294        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10295        // Prevent Drop from running (which would shut down the channel)
10296        std::mem::forget(self);
10297    }
10298}
10299
10300impl SocketGetErrorResponder {
10301    /// Sends a response to the FIDL transaction.
10302    ///
10303    /// Sets the channel to shutdown if an error occurs.
10304    pub fn send(
10305        self,
10306        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10307    ) -> Result<(), fidl::Error> {
10308        let _result = self.send_raw(result);
10309        if _result.is_err() {
10310            self.control_handle.shutdown();
10311        }
10312        self.drop_without_shutdown();
10313        _result
10314    }
10315
10316    /// Similar to "send" but does not shutdown the channel if an error occurs.
10317    pub fn send_no_shutdown_on_err(
10318        self,
10319        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10320    ) -> Result<(), fidl::Error> {
10321        let _result = self.send_raw(result);
10322        self.drop_without_shutdown();
10323        _result
10324    }
10325
10326    fn send_raw(
10327        &self,
10328        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10329    ) -> Result<(), fidl::Error> {
10330        self.control_handle.inner.send::<fidl::encoding::ResultType<
10331            fidl::encoding::EmptyStruct,
10332            fidl_fuchsia_posix::Errno,
10333        >>(
10334            result,
10335            self.tx_id,
10336            0x5aad39b33e5f6ebb,
10337            fidl::encoding::DynamicFlags::empty(),
10338        )
10339    }
10340}
10341
10342#[must_use = "FIDL methods require a response to be sent"]
10343#[derive(Debug)]
10344pub struct SocketSetBroadcastResponder {
10345    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10346    tx_id: u32,
10347}
10348
10349/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10350/// if the responder is dropped without sending a response, so that the client
10351/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10352impl std::ops::Drop for SocketSetBroadcastResponder {
10353    fn drop(&mut self) {
10354        self.control_handle.shutdown();
10355        // Safety: drops once, never accessed again
10356        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10357    }
10358}
10359
10360impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10361    type ControlHandle = SocketControlHandle;
10362
10363    fn control_handle(&self) -> &SocketControlHandle {
10364        &self.control_handle
10365    }
10366
10367    fn drop_without_shutdown(mut self) {
10368        // Safety: drops once, never accessed again due to mem::forget
10369        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10370        // Prevent Drop from running (which would shut down the channel)
10371        std::mem::forget(self);
10372    }
10373}
10374
10375impl SocketSetBroadcastResponder {
10376    /// Sends a response to the FIDL transaction.
10377    ///
10378    /// Sets the channel to shutdown if an error occurs.
10379    pub fn send(
10380        self,
10381        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10382    ) -> Result<(), fidl::Error> {
10383        let _result = self.send_raw(result);
10384        if _result.is_err() {
10385            self.control_handle.shutdown();
10386        }
10387        self.drop_without_shutdown();
10388        _result
10389    }
10390
10391    /// Similar to "send" but does not shutdown the channel if an error occurs.
10392    pub fn send_no_shutdown_on_err(
10393        self,
10394        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10395    ) -> Result<(), fidl::Error> {
10396        let _result = self.send_raw(result);
10397        self.drop_without_shutdown();
10398        _result
10399    }
10400
10401    fn send_raw(
10402        &self,
10403        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10404    ) -> Result<(), fidl::Error> {
10405        self.control_handle.inner.send::<fidl::encoding::ResultType<
10406            fidl::encoding::EmptyStruct,
10407            fidl_fuchsia_posix::Errno,
10408        >>(
10409            result,
10410            self.tx_id,
10411            0x6023e081ce3cd947,
10412            fidl::encoding::DynamicFlags::empty(),
10413        )
10414    }
10415}
10416
10417#[must_use = "FIDL methods require a response to be sent"]
10418#[derive(Debug)]
10419pub struct SocketGetBroadcastResponder {
10420    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10421    tx_id: u32,
10422}
10423
10424/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10425/// if the responder is dropped without sending a response, so that the client
10426/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10427impl std::ops::Drop for SocketGetBroadcastResponder {
10428    fn drop(&mut self) {
10429        self.control_handle.shutdown();
10430        // Safety: drops once, never accessed again
10431        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10432    }
10433}
10434
10435impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10436    type ControlHandle = SocketControlHandle;
10437
10438    fn control_handle(&self) -> &SocketControlHandle {
10439        &self.control_handle
10440    }
10441
10442    fn drop_without_shutdown(mut self) {
10443        // Safety: drops once, never accessed again due to mem::forget
10444        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10445        // Prevent Drop from running (which would shut down the channel)
10446        std::mem::forget(self);
10447    }
10448}
10449
10450impl SocketGetBroadcastResponder {
10451    /// Sends a response to the FIDL transaction.
10452    ///
10453    /// Sets the channel to shutdown if an error occurs.
10454    pub fn send(
10455        self,
10456        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10457    ) -> Result<(), fidl::Error> {
10458        let _result = self.send_raw(result);
10459        if _result.is_err() {
10460            self.control_handle.shutdown();
10461        }
10462        self.drop_without_shutdown();
10463        _result
10464    }
10465
10466    /// Similar to "send" but does not shutdown the channel if an error occurs.
10467    pub fn send_no_shutdown_on_err(
10468        self,
10469        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10470    ) -> Result<(), fidl::Error> {
10471        let _result = self.send_raw(result);
10472        self.drop_without_shutdown();
10473        _result
10474    }
10475
10476    fn send_raw(
10477        &self,
10478        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10479    ) -> Result<(), fidl::Error> {
10480        self.control_handle.inner.send::<fidl::encoding::ResultType<
10481            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10482            fidl_fuchsia_posix::Errno,
10483        >>(
10484            result.map(|value| (value,)),
10485            self.tx_id,
10486            0x68796fc556f9780d,
10487            fidl::encoding::DynamicFlags::empty(),
10488        )
10489    }
10490}
10491
10492#[must_use = "FIDL methods require a response to be sent"]
10493#[derive(Debug)]
10494pub struct SocketSetSendBufferResponder {
10495    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10496    tx_id: u32,
10497}
10498
10499/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10500/// if the responder is dropped without sending a response, so that the client
10501/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10502impl std::ops::Drop for SocketSetSendBufferResponder {
10503    fn drop(&mut self) {
10504        self.control_handle.shutdown();
10505        // Safety: drops once, never accessed again
10506        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10507    }
10508}
10509
10510impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10511    type ControlHandle = SocketControlHandle;
10512
10513    fn control_handle(&self) -> &SocketControlHandle {
10514        &self.control_handle
10515    }
10516
10517    fn drop_without_shutdown(mut self) {
10518        // Safety: drops once, never accessed again due to mem::forget
10519        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10520        // Prevent Drop from running (which would shut down the channel)
10521        std::mem::forget(self);
10522    }
10523}
10524
10525impl SocketSetSendBufferResponder {
10526    /// Sends a response to the FIDL transaction.
10527    ///
10528    /// Sets the channel to shutdown if an error occurs.
10529    pub fn send(
10530        self,
10531        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10532    ) -> Result<(), fidl::Error> {
10533        let _result = self.send_raw(result);
10534        if _result.is_err() {
10535            self.control_handle.shutdown();
10536        }
10537        self.drop_without_shutdown();
10538        _result
10539    }
10540
10541    /// Similar to "send" but does not shutdown the channel if an error occurs.
10542    pub fn send_no_shutdown_on_err(
10543        self,
10544        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10545    ) -> Result<(), fidl::Error> {
10546        let _result = self.send_raw(result);
10547        self.drop_without_shutdown();
10548        _result
10549    }
10550
10551    fn send_raw(
10552        &self,
10553        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10554    ) -> Result<(), fidl::Error> {
10555        self.control_handle.inner.send::<fidl::encoding::ResultType<
10556            fidl::encoding::EmptyStruct,
10557            fidl_fuchsia_posix::Errno,
10558        >>(
10559            result,
10560            self.tx_id,
10561            0x756eac32d73a7a70,
10562            fidl::encoding::DynamicFlags::empty(),
10563        )
10564    }
10565}
10566
10567#[must_use = "FIDL methods require a response to be sent"]
10568#[derive(Debug)]
10569pub struct SocketGetSendBufferResponder {
10570    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10571    tx_id: u32,
10572}
10573
10574/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10575/// if the responder is dropped without sending a response, so that the client
10576/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10577impl std::ops::Drop for SocketGetSendBufferResponder {
10578    fn drop(&mut self) {
10579        self.control_handle.shutdown();
10580        // Safety: drops once, never accessed again
10581        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10582    }
10583}
10584
10585impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10586    type ControlHandle = SocketControlHandle;
10587
10588    fn control_handle(&self) -> &SocketControlHandle {
10589        &self.control_handle
10590    }
10591
10592    fn drop_without_shutdown(mut self) {
10593        // Safety: drops once, never accessed again due to mem::forget
10594        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10595        // Prevent Drop from running (which would shut down the channel)
10596        std::mem::forget(self);
10597    }
10598}
10599
10600impl SocketGetSendBufferResponder {
10601    /// Sends a response to the FIDL transaction.
10602    ///
10603    /// Sets the channel to shutdown if an error occurs.
10604    pub fn send(
10605        self,
10606        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10607    ) -> Result<(), fidl::Error> {
10608        let _result = self.send_raw(result);
10609        if _result.is_err() {
10610            self.control_handle.shutdown();
10611        }
10612        self.drop_without_shutdown();
10613        _result
10614    }
10615
10616    /// Similar to "send" but does not shutdown the channel if an error occurs.
10617    pub fn send_no_shutdown_on_err(
10618        self,
10619        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10620    ) -> Result<(), fidl::Error> {
10621        let _result = self.send_raw(result);
10622        self.drop_without_shutdown();
10623        _result
10624    }
10625
10626    fn send_raw(
10627        &self,
10628        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10629    ) -> Result<(), fidl::Error> {
10630        self.control_handle.inner.send::<fidl::encoding::ResultType<
10631            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10632            fidl_fuchsia_posix::Errno,
10633        >>(
10634            result.map(|value_bytes| (value_bytes,)),
10635            self.tx_id,
10636            0x78a52fd9c7b2410b,
10637            fidl::encoding::DynamicFlags::empty(),
10638        )
10639    }
10640}
10641
10642#[must_use = "FIDL methods require a response to be sent"]
10643#[derive(Debug)]
10644pub struct SocketSetReceiveBufferResponder {
10645    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10646    tx_id: u32,
10647}
10648
10649/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10650/// if the responder is dropped without sending a response, so that the client
10651/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10652impl std::ops::Drop for SocketSetReceiveBufferResponder {
10653    fn drop(&mut self) {
10654        self.control_handle.shutdown();
10655        // Safety: drops once, never accessed again
10656        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10657    }
10658}
10659
10660impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10661    type ControlHandle = SocketControlHandle;
10662
10663    fn control_handle(&self) -> &SocketControlHandle {
10664        &self.control_handle
10665    }
10666
10667    fn drop_without_shutdown(mut self) {
10668        // Safety: drops once, never accessed again due to mem::forget
10669        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10670        // Prevent Drop from running (which would shut down the channel)
10671        std::mem::forget(self);
10672    }
10673}
10674
10675impl SocketSetReceiveBufferResponder {
10676    /// Sends a response to the FIDL transaction.
10677    ///
10678    /// Sets the channel to shutdown if an error occurs.
10679    pub fn send(
10680        self,
10681        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10682    ) -> Result<(), fidl::Error> {
10683        let _result = self.send_raw(result);
10684        if _result.is_err() {
10685            self.control_handle.shutdown();
10686        }
10687        self.drop_without_shutdown();
10688        _result
10689    }
10690
10691    /// Similar to "send" but does not shutdown the channel if an error occurs.
10692    pub fn send_no_shutdown_on_err(
10693        self,
10694        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10695    ) -> Result<(), fidl::Error> {
10696        let _result = self.send_raw(result);
10697        self.drop_without_shutdown();
10698        _result
10699    }
10700
10701    fn send_raw(
10702        &self,
10703        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10704    ) -> Result<(), fidl::Error> {
10705        self.control_handle.inner.send::<fidl::encoding::ResultType<
10706            fidl::encoding::EmptyStruct,
10707            fidl_fuchsia_posix::Errno,
10708        >>(
10709            result,
10710            self.tx_id,
10711            0x6b0cf2f1919c7001,
10712            fidl::encoding::DynamicFlags::empty(),
10713        )
10714    }
10715}
10716
10717#[must_use = "FIDL methods require a response to be sent"]
10718#[derive(Debug)]
10719pub struct SocketGetReceiveBufferResponder {
10720    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10721    tx_id: u32,
10722}
10723
10724/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10725/// if the responder is dropped without sending a response, so that the client
10726/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10727impl std::ops::Drop for SocketGetReceiveBufferResponder {
10728    fn drop(&mut self) {
10729        self.control_handle.shutdown();
10730        // Safety: drops once, never accessed again
10731        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10732    }
10733}
10734
10735impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10736    type ControlHandle = SocketControlHandle;
10737
10738    fn control_handle(&self) -> &SocketControlHandle {
10739        &self.control_handle
10740    }
10741
10742    fn drop_without_shutdown(mut self) {
10743        // Safety: drops once, never accessed again due to mem::forget
10744        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10745        // Prevent Drop from running (which would shut down the channel)
10746        std::mem::forget(self);
10747    }
10748}
10749
10750impl SocketGetReceiveBufferResponder {
10751    /// Sends a response to the FIDL transaction.
10752    ///
10753    /// Sets the channel to shutdown if an error occurs.
10754    pub fn send(
10755        self,
10756        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10757    ) -> Result<(), fidl::Error> {
10758        let _result = self.send_raw(result);
10759        if _result.is_err() {
10760            self.control_handle.shutdown();
10761        }
10762        self.drop_without_shutdown();
10763        _result
10764    }
10765
10766    /// Similar to "send" but does not shutdown the channel if an error occurs.
10767    pub fn send_no_shutdown_on_err(
10768        self,
10769        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10770    ) -> Result<(), fidl::Error> {
10771        let _result = self.send_raw(result);
10772        self.drop_without_shutdown();
10773        _result
10774    }
10775
10776    fn send_raw(
10777        &self,
10778        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10779    ) -> Result<(), fidl::Error> {
10780        self.control_handle.inner.send::<fidl::encoding::ResultType<
10781            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10782            fidl_fuchsia_posix::Errno,
10783        >>(
10784            result.map(|value_bytes| (value_bytes,)),
10785            self.tx_id,
10786            0x14c1a4b64f709e5c,
10787            fidl::encoding::DynamicFlags::empty(),
10788        )
10789    }
10790}
10791
10792#[must_use = "FIDL methods require a response to be sent"]
10793#[derive(Debug)]
10794pub struct SocketSetKeepAliveResponder {
10795    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10796    tx_id: u32,
10797}
10798
10799/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10800/// if the responder is dropped without sending a response, so that the client
10801/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10802impl std::ops::Drop for SocketSetKeepAliveResponder {
10803    fn drop(&mut self) {
10804        self.control_handle.shutdown();
10805        // Safety: drops once, never accessed again
10806        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10807    }
10808}
10809
10810impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10811    type ControlHandle = SocketControlHandle;
10812
10813    fn control_handle(&self) -> &SocketControlHandle {
10814        &self.control_handle
10815    }
10816
10817    fn drop_without_shutdown(mut self) {
10818        // Safety: drops once, never accessed again due to mem::forget
10819        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10820        // Prevent Drop from running (which would shut down the channel)
10821        std::mem::forget(self);
10822    }
10823}
10824
10825impl SocketSetKeepAliveResponder {
10826    /// Sends a response to the FIDL transaction.
10827    ///
10828    /// Sets the channel to shutdown if an error occurs.
10829    pub fn send(
10830        self,
10831        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10832    ) -> Result<(), fidl::Error> {
10833        let _result = self.send_raw(result);
10834        if _result.is_err() {
10835            self.control_handle.shutdown();
10836        }
10837        self.drop_without_shutdown();
10838        _result
10839    }
10840
10841    /// Similar to "send" but does not shutdown the channel if an error occurs.
10842    pub fn send_no_shutdown_on_err(
10843        self,
10844        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10845    ) -> Result<(), fidl::Error> {
10846        let _result = self.send_raw(result);
10847        self.drop_without_shutdown();
10848        _result
10849    }
10850
10851    fn send_raw(
10852        &self,
10853        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10854    ) -> Result<(), fidl::Error> {
10855        self.control_handle.inner.send::<fidl::encoding::ResultType<
10856            fidl::encoding::EmptyStruct,
10857            fidl_fuchsia_posix::Errno,
10858        >>(
10859            result,
10860            self.tx_id,
10861            0x572df8f0b920d2c7,
10862            fidl::encoding::DynamicFlags::empty(),
10863        )
10864    }
10865}
10866
10867#[must_use = "FIDL methods require a response to be sent"]
10868#[derive(Debug)]
10869pub struct SocketGetKeepAliveResponder {
10870    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10871    tx_id: u32,
10872}
10873
10874/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10875/// if the responder is dropped without sending a response, so that the client
10876/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10877impl std::ops::Drop for SocketGetKeepAliveResponder {
10878    fn drop(&mut self) {
10879        self.control_handle.shutdown();
10880        // Safety: drops once, never accessed again
10881        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10882    }
10883}
10884
10885impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10886    type ControlHandle = SocketControlHandle;
10887
10888    fn control_handle(&self) -> &SocketControlHandle {
10889        &self.control_handle
10890    }
10891
10892    fn drop_without_shutdown(mut self) {
10893        // Safety: drops once, never accessed again due to mem::forget
10894        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10895        // Prevent Drop from running (which would shut down the channel)
10896        std::mem::forget(self);
10897    }
10898}
10899
10900impl SocketGetKeepAliveResponder {
10901    /// Sends a response to the FIDL transaction.
10902    ///
10903    /// Sets the channel to shutdown if an error occurs.
10904    pub fn send(
10905        self,
10906        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10907    ) -> Result<(), fidl::Error> {
10908        let _result = self.send_raw(result);
10909        if _result.is_err() {
10910            self.control_handle.shutdown();
10911        }
10912        self.drop_without_shutdown();
10913        _result
10914    }
10915
10916    /// Similar to "send" but does not shutdown the channel if an error occurs.
10917    pub fn send_no_shutdown_on_err(
10918        self,
10919        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10920    ) -> Result<(), fidl::Error> {
10921        let _result = self.send_raw(result);
10922        self.drop_without_shutdown();
10923        _result
10924    }
10925
10926    fn send_raw(
10927        &self,
10928        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10929    ) -> Result<(), fidl::Error> {
10930        self.control_handle.inner.send::<fidl::encoding::ResultType<
10931            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10932            fidl_fuchsia_posix::Errno,
10933        >>(
10934            result.map(|value| (value,)),
10935            self.tx_id,
10936            0x2dd29d3215f2c9d2,
10937            fidl::encoding::DynamicFlags::empty(),
10938        )
10939    }
10940}
10941
10942#[must_use = "FIDL methods require a response to be sent"]
10943#[derive(Debug)]
10944pub struct SocketSetOutOfBandInlineResponder {
10945    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10946    tx_id: u32,
10947}
10948
10949/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10950/// if the responder is dropped without sending a response, so that the client
10951/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10952impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10953    fn drop(&mut self) {
10954        self.control_handle.shutdown();
10955        // Safety: drops once, never accessed again
10956        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10957    }
10958}
10959
10960impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10961    type ControlHandle = SocketControlHandle;
10962
10963    fn control_handle(&self) -> &SocketControlHandle {
10964        &self.control_handle
10965    }
10966
10967    fn drop_without_shutdown(mut self) {
10968        // Safety: drops once, never accessed again due to mem::forget
10969        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10970        // Prevent Drop from running (which would shut down the channel)
10971        std::mem::forget(self);
10972    }
10973}
10974
10975impl SocketSetOutOfBandInlineResponder {
10976    /// Sends a response to the FIDL transaction.
10977    ///
10978    /// Sets the channel to shutdown if an error occurs.
10979    pub fn send(
10980        self,
10981        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10982    ) -> Result<(), fidl::Error> {
10983        let _result = self.send_raw(result);
10984        if _result.is_err() {
10985            self.control_handle.shutdown();
10986        }
10987        self.drop_without_shutdown();
10988        _result
10989    }
10990
10991    /// Similar to "send" but does not shutdown the channel if an error occurs.
10992    pub fn send_no_shutdown_on_err(
10993        self,
10994        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10995    ) -> Result<(), fidl::Error> {
10996        let _result = self.send_raw(result);
10997        self.drop_without_shutdown();
10998        _result
10999    }
11000
11001    fn send_raw(
11002        &self,
11003        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11004    ) -> Result<(), fidl::Error> {
11005        self.control_handle.inner.send::<fidl::encoding::ResultType<
11006            fidl::encoding::EmptyStruct,
11007            fidl_fuchsia_posix::Errno,
11008        >>(
11009            result,
11010            self.tx_id,
11011            0x3ecb49968bee439,
11012            fidl::encoding::DynamicFlags::empty(),
11013        )
11014    }
11015}
11016
11017#[must_use = "FIDL methods require a response to be sent"]
11018#[derive(Debug)]
11019pub struct SocketGetOutOfBandInlineResponder {
11020    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11021    tx_id: u32,
11022}
11023
11024/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11025/// if the responder is dropped without sending a response, so that the client
11026/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11027impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
11028    fn drop(&mut self) {
11029        self.control_handle.shutdown();
11030        // Safety: drops once, never accessed again
11031        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11032    }
11033}
11034
11035impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
11036    type ControlHandle = SocketControlHandle;
11037
11038    fn control_handle(&self) -> &SocketControlHandle {
11039        &self.control_handle
11040    }
11041
11042    fn drop_without_shutdown(mut self) {
11043        // Safety: drops once, never accessed again due to mem::forget
11044        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11045        // Prevent Drop from running (which would shut down the channel)
11046        std::mem::forget(self);
11047    }
11048}
11049
11050impl SocketGetOutOfBandInlineResponder {
11051    /// Sends a response to the FIDL transaction.
11052    ///
11053    /// Sets the channel to shutdown if an error occurs.
11054    pub fn send(
11055        self,
11056        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11057    ) -> Result<(), fidl::Error> {
11058        let _result = self.send_raw(result);
11059        if _result.is_err() {
11060            self.control_handle.shutdown();
11061        }
11062        self.drop_without_shutdown();
11063        _result
11064    }
11065
11066    /// Similar to "send" but does not shutdown the channel if an error occurs.
11067    pub fn send_no_shutdown_on_err(
11068        self,
11069        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11070    ) -> Result<(), fidl::Error> {
11071        let _result = self.send_raw(result);
11072        self.drop_without_shutdown();
11073        _result
11074    }
11075
11076    fn send_raw(
11077        &self,
11078        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11079    ) -> Result<(), fidl::Error> {
11080        self.control_handle.inner.send::<fidl::encoding::ResultType<
11081            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
11082            fidl_fuchsia_posix::Errno,
11083        >>(
11084            result.map(|value| (value,)),
11085            self.tx_id,
11086            0x348c1ab3aeca1745,
11087            fidl::encoding::DynamicFlags::empty(),
11088        )
11089    }
11090}
11091
11092#[must_use = "FIDL methods require a response to be sent"]
11093#[derive(Debug)]
11094pub struct SocketSetNoCheckResponder {
11095    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11096    tx_id: u32,
11097}
11098
11099/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11100/// if the responder is dropped without sending a response, so that the client
11101/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11102impl std::ops::Drop for SocketSetNoCheckResponder {
11103    fn drop(&mut self) {
11104        self.control_handle.shutdown();
11105        // Safety: drops once, never accessed again
11106        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11107    }
11108}
11109
11110impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
11111    type ControlHandle = SocketControlHandle;
11112
11113    fn control_handle(&self) -> &SocketControlHandle {
11114        &self.control_handle
11115    }
11116
11117    fn drop_without_shutdown(mut self) {
11118        // Safety: drops once, never accessed again due to mem::forget
11119        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11120        // Prevent Drop from running (which would shut down the channel)
11121        std::mem::forget(self);
11122    }
11123}
11124
11125impl SocketSetNoCheckResponder {
11126    /// Sends a response to the FIDL transaction.
11127    ///
11128    /// Sets the channel to shutdown if an error occurs.
11129    pub fn send(
11130        self,
11131        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11132    ) -> Result<(), fidl::Error> {
11133        let _result = self.send_raw(result);
11134        if _result.is_err() {
11135            self.control_handle.shutdown();
11136        }
11137        self.drop_without_shutdown();
11138        _result
11139    }
11140
11141    /// Similar to "send" but does not shutdown the channel if an error occurs.
11142    pub fn send_no_shutdown_on_err(
11143        self,
11144        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11145    ) -> Result<(), fidl::Error> {
11146        let _result = self.send_raw(result);
11147        self.drop_without_shutdown();
11148        _result
11149    }
11150
11151    fn send_raw(
11152        &self,
11153        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11154    ) -> Result<(), fidl::Error> {
11155        self.control_handle.inner.send::<fidl::encoding::ResultType<
11156            fidl::encoding::EmptyStruct,
11157            fidl_fuchsia_posix::Errno,
11158        >>(
11159            result,
11160            self.tx_id,
11161            0x6bbf00c53a4c78c2,
11162            fidl::encoding::DynamicFlags::empty(),
11163        )
11164    }
11165}
11166
11167#[must_use = "FIDL methods require a response to be sent"]
11168#[derive(Debug)]
11169pub struct SocketGetNoCheckResponder {
11170    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11171    tx_id: u32,
11172}
11173
11174/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11175/// if the responder is dropped without sending a response, so that the client
11176/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11177impl std::ops::Drop for SocketGetNoCheckResponder {
11178    fn drop(&mut self) {
11179        self.control_handle.shutdown();
11180        // Safety: drops once, never accessed again
11181        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11182    }
11183}
11184
11185impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
11186    type ControlHandle = SocketControlHandle;
11187
11188    fn control_handle(&self) -> &SocketControlHandle {
11189        &self.control_handle
11190    }
11191
11192    fn drop_without_shutdown(mut self) {
11193        // Safety: drops once, never accessed again due to mem::forget
11194        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11195        // Prevent Drop from running (which would shut down the channel)
11196        std::mem::forget(self);
11197    }
11198}
11199
11200impl SocketGetNoCheckResponder {
11201    /// Sends a response to the FIDL transaction.
11202    ///
11203    /// Sets the channel to shutdown if an error occurs.
11204    pub fn send(
11205        self,
11206        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11207    ) -> Result<(), fidl::Error> {
11208        let _result = self.send_raw(result);
11209        if _result.is_err() {
11210            self.control_handle.shutdown();
11211        }
11212        self.drop_without_shutdown();
11213        _result
11214    }
11215
11216    /// Similar to "send" but does not shutdown the channel if an error occurs.
11217    pub fn send_no_shutdown_on_err(
11218        self,
11219        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11220    ) -> Result<(), fidl::Error> {
11221        let _result = self.send_raw(result);
11222        self.drop_without_shutdown();
11223        _result
11224    }
11225
11226    fn send_raw(
11227        &self,
11228        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11229    ) -> Result<(), fidl::Error> {
11230        self.control_handle.inner.send::<fidl::encoding::ResultType<
11231            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
11232            fidl_fuchsia_posix::Errno,
11233        >>(
11234            result.map(|value| (value,)),
11235            self.tx_id,
11236            0x2cd4249286417694,
11237            fidl::encoding::DynamicFlags::empty(),
11238        )
11239    }
11240}
11241
11242#[must_use = "FIDL methods require a response to be sent"]
11243#[derive(Debug)]
11244pub struct SocketSetLingerResponder {
11245    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11246    tx_id: u32,
11247}
11248
11249/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11250/// if the responder is dropped without sending a response, so that the client
11251/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11252impl std::ops::Drop for SocketSetLingerResponder {
11253    fn drop(&mut self) {
11254        self.control_handle.shutdown();
11255        // Safety: drops once, never accessed again
11256        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11257    }
11258}
11259
11260impl fidl::endpoints::Responder for SocketSetLingerResponder {
11261    type ControlHandle = SocketControlHandle;
11262
11263    fn control_handle(&self) -> &SocketControlHandle {
11264        &self.control_handle
11265    }
11266
11267    fn drop_without_shutdown(mut self) {
11268        // Safety: drops once, never accessed again due to mem::forget
11269        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11270        // Prevent Drop from running (which would shut down the channel)
11271        std::mem::forget(self);
11272    }
11273}
11274
11275impl SocketSetLingerResponder {
11276    /// Sends a response to the FIDL transaction.
11277    ///
11278    /// Sets the channel to shutdown if an error occurs.
11279    pub fn send(
11280        self,
11281        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11282    ) -> Result<(), fidl::Error> {
11283        let _result = self.send_raw(result);
11284        if _result.is_err() {
11285            self.control_handle.shutdown();
11286        }
11287        self.drop_without_shutdown();
11288        _result
11289    }
11290
11291    /// Similar to "send" but does not shutdown the channel if an error occurs.
11292    pub fn send_no_shutdown_on_err(
11293        self,
11294        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11295    ) -> Result<(), fidl::Error> {
11296        let _result = self.send_raw(result);
11297        self.drop_without_shutdown();
11298        _result
11299    }
11300
11301    fn send_raw(
11302        &self,
11303        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11304    ) -> Result<(), fidl::Error> {
11305        self.control_handle.inner.send::<fidl::encoding::ResultType<
11306            fidl::encoding::EmptyStruct,
11307            fidl_fuchsia_posix::Errno,
11308        >>(
11309            result,
11310            self.tx_id,
11311            0x45386351246e998e,
11312            fidl::encoding::DynamicFlags::empty(),
11313        )
11314    }
11315}
11316
11317#[must_use = "FIDL methods require a response to be sent"]
11318#[derive(Debug)]
11319pub struct SocketGetLingerResponder {
11320    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11321    tx_id: u32,
11322}
11323
11324/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11325/// if the responder is dropped without sending a response, so that the client
11326/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11327impl std::ops::Drop for SocketGetLingerResponder {
11328    fn drop(&mut self) {
11329        self.control_handle.shutdown();
11330        // Safety: drops once, never accessed again
11331        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11332    }
11333}
11334
11335impl fidl::endpoints::Responder for SocketGetLingerResponder {
11336    type ControlHandle = SocketControlHandle;
11337
11338    fn control_handle(&self) -> &SocketControlHandle {
11339        &self.control_handle
11340    }
11341
11342    fn drop_without_shutdown(mut self) {
11343        // Safety: drops once, never accessed again due to mem::forget
11344        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11345        // Prevent Drop from running (which would shut down the channel)
11346        std::mem::forget(self);
11347    }
11348}
11349
11350impl SocketGetLingerResponder {
11351    /// Sends a response to the FIDL transaction.
11352    ///
11353    /// Sets the channel to shutdown if an error occurs.
11354    pub fn send(
11355        self,
11356        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11357    ) -> Result<(), fidl::Error> {
11358        let _result = self.send_raw(result);
11359        if _result.is_err() {
11360            self.control_handle.shutdown();
11361        }
11362        self.drop_without_shutdown();
11363        _result
11364    }
11365
11366    /// Similar to "send" but does not shutdown the channel if an error occurs.
11367    pub fn send_no_shutdown_on_err(
11368        self,
11369        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11370    ) -> Result<(), fidl::Error> {
11371        let _result = self.send_raw(result);
11372        self.drop_without_shutdown();
11373        _result
11374    }
11375
11376    fn send_raw(
11377        &self,
11378        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11379    ) -> Result<(), fidl::Error> {
11380        self.control_handle.inner.send::<fidl::encoding::ResultType<
11381            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11382            fidl_fuchsia_posix::Errno,
11383        >>(
11384            result,
11385            self.tx_id,
11386            0x48eb20fc5ccb0e45,
11387            fidl::encoding::DynamicFlags::empty(),
11388        )
11389    }
11390}
11391
11392#[must_use = "FIDL methods require a response to be sent"]
11393#[derive(Debug)]
11394pub struct SocketSetReusePortResponder {
11395    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11396    tx_id: u32,
11397}
11398
11399/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11400/// if the responder is dropped without sending a response, so that the client
11401/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11402impl std::ops::Drop for SocketSetReusePortResponder {
11403    fn drop(&mut self) {
11404        self.control_handle.shutdown();
11405        // Safety: drops once, never accessed again
11406        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11407    }
11408}
11409
11410impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11411    type ControlHandle = SocketControlHandle;
11412
11413    fn control_handle(&self) -> &SocketControlHandle {
11414        &self.control_handle
11415    }
11416
11417    fn drop_without_shutdown(mut self) {
11418        // Safety: drops once, never accessed again due to mem::forget
11419        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11420        // Prevent Drop from running (which would shut down the channel)
11421        std::mem::forget(self);
11422    }
11423}
11424
11425impl SocketSetReusePortResponder {
11426    /// Sends a response to the FIDL transaction.
11427    ///
11428    /// Sets the channel to shutdown if an error occurs.
11429    pub fn send(
11430        self,
11431        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11432    ) -> Result<(), fidl::Error> {
11433        let _result = self.send_raw(result);
11434        if _result.is_err() {
11435            self.control_handle.shutdown();
11436        }
11437        self.drop_without_shutdown();
11438        _result
11439    }
11440
11441    /// Similar to "send" but does not shutdown the channel if an error occurs.
11442    pub fn send_no_shutdown_on_err(
11443        self,
11444        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11445    ) -> Result<(), fidl::Error> {
11446        let _result = self.send_raw(result);
11447        self.drop_without_shutdown();
11448        _result
11449    }
11450
11451    fn send_raw(
11452        &self,
11453        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11454    ) -> Result<(), fidl::Error> {
11455        self.control_handle.inner.send::<fidl::encoding::ResultType<
11456            fidl::encoding::EmptyStruct,
11457            fidl_fuchsia_posix::Errno,
11458        >>(
11459            result,
11460            self.tx_id,
11461            0x547dc9cc0455189e,
11462            fidl::encoding::DynamicFlags::empty(),
11463        )
11464    }
11465}
11466
11467#[must_use = "FIDL methods require a response to be sent"]
11468#[derive(Debug)]
11469pub struct SocketSetReusePortDeprecatedResponder {
11470    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11471    tx_id: u32,
11472}
11473
11474/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11475/// if the responder is dropped without sending a response, so that the client
11476/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11477impl std::ops::Drop for SocketSetReusePortDeprecatedResponder {
11478    fn drop(&mut self) {
11479        self.control_handle.shutdown();
11480        // Safety: drops once, never accessed again
11481        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11482    }
11483}
11484
11485impl fidl::endpoints::Responder for SocketSetReusePortDeprecatedResponder {
11486    type ControlHandle = SocketControlHandle;
11487
11488    fn control_handle(&self) -> &SocketControlHandle {
11489        &self.control_handle
11490    }
11491
11492    fn drop_without_shutdown(mut self) {
11493        // Safety: drops once, never accessed again due to mem::forget
11494        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11495        // Prevent Drop from running (which would shut down the channel)
11496        std::mem::forget(self);
11497    }
11498}
11499
11500impl SocketSetReusePortDeprecatedResponder {
11501    /// Sends a response to the FIDL transaction.
11502    ///
11503    /// Sets the channel to shutdown if an error occurs.
11504    pub fn send(
11505        self,
11506        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11507    ) -> Result<(), fidl::Error> {
11508        let _result = self.send_raw(result);
11509        if _result.is_err() {
11510            self.control_handle.shutdown();
11511        }
11512        self.drop_without_shutdown();
11513        _result
11514    }
11515
11516    /// Similar to "send" but does not shutdown the channel if an error occurs.
11517    pub fn send_no_shutdown_on_err(
11518        self,
11519        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11520    ) -> Result<(), fidl::Error> {
11521        let _result = self.send_raw(result);
11522        self.drop_without_shutdown();
11523        _result
11524    }
11525
11526    fn send_raw(
11527        &self,
11528        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11529    ) -> Result<(), fidl::Error> {
11530        self.control_handle.inner.send::<fidl::encoding::ResultType<
11531            fidl::encoding::EmptyStruct,
11532            fidl_fuchsia_posix::Errno,
11533        >>(
11534            result,
11535            self.tx_id,
11536            0x24dd3e5cb36d9ccb,
11537            fidl::encoding::DynamicFlags::empty(),
11538        )
11539    }
11540}
11541
11542#[must_use = "FIDL methods require a response to be sent"]
11543#[derive(Debug)]
11544pub struct SocketGetReusePortResponder {
11545    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11546    tx_id: u32,
11547}
11548
11549/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11550/// if the responder is dropped without sending a response, so that the client
11551/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11552impl std::ops::Drop for SocketGetReusePortResponder {
11553    fn drop(&mut self) {
11554        self.control_handle.shutdown();
11555        // Safety: drops once, never accessed again
11556        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11557    }
11558}
11559
11560impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11561    type ControlHandle = SocketControlHandle;
11562
11563    fn control_handle(&self) -> &SocketControlHandle {
11564        &self.control_handle
11565    }
11566
11567    fn drop_without_shutdown(mut self) {
11568        // Safety: drops once, never accessed again due to mem::forget
11569        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11570        // Prevent Drop from running (which would shut down the channel)
11571        std::mem::forget(self);
11572    }
11573}
11574
11575impl SocketGetReusePortResponder {
11576    /// Sends a response to the FIDL transaction.
11577    ///
11578    /// Sets the channel to shutdown if an error occurs.
11579    pub fn send(
11580        self,
11581        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11582    ) -> Result<(), fidl::Error> {
11583        let _result = self.send_raw(result);
11584        if _result.is_err() {
11585            self.control_handle.shutdown();
11586        }
11587        self.drop_without_shutdown();
11588        _result
11589    }
11590
11591    /// Similar to "send" but does not shutdown the channel if an error occurs.
11592    pub fn send_no_shutdown_on_err(
11593        self,
11594        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11595    ) -> Result<(), fidl::Error> {
11596        let _result = self.send_raw(result);
11597        self.drop_without_shutdown();
11598        _result
11599    }
11600
11601    fn send_raw(
11602        &self,
11603        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11604    ) -> Result<(), fidl::Error> {
11605        self.control_handle.inner.send::<fidl::encoding::ResultType<
11606            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11607            fidl_fuchsia_posix::Errno,
11608        >>(
11609            result.map(|value| (value,)),
11610            self.tx_id,
11611            0x7a112c1ab54ff828,
11612            fidl::encoding::DynamicFlags::empty(),
11613        )
11614    }
11615}
11616
11617#[must_use = "FIDL methods require a response to be sent"]
11618#[derive(Debug)]
11619pub struct SocketGetAcceptConnResponder {
11620    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11621    tx_id: u32,
11622}
11623
11624/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11625/// if the responder is dropped without sending a response, so that the client
11626/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11627impl std::ops::Drop for SocketGetAcceptConnResponder {
11628    fn drop(&mut self) {
11629        self.control_handle.shutdown();
11630        // Safety: drops once, never accessed again
11631        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11632    }
11633}
11634
11635impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11636    type ControlHandle = SocketControlHandle;
11637
11638    fn control_handle(&self) -> &SocketControlHandle {
11639        &self.control_handle
11640    }
11641
11642    fn drop_without_shutdown(mut self) {
11643        // Safety: drops once, never accessed again due to mem::forget
11644        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11645        // Prevent Drop from running (which would shut down the channel)
11646        std::mem::forget(self);
11647    }
11648}
11649
11650impl SocketGetAcceptConnResponder {
11651    /// Sends a response to the FIDL transaction.
11652    ///
11653    /// Sets the channel to shutdown if an error occurs.
11654    pub fn send(
11655        self,
11656        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11657    ) -> Result<(), fidl::Error> {
11658        let _result = self.send_raw(result);
11659        if _result.is_err() {
11660            self.control_handle.shutdown();
11661        }
11662        self.drop_without_shutdown();
11663        _result
11664    }
11665
11666    /// Similar to "send" but does not shutdown the channel if an error occurs.
11667    pub fn send_no_shutdown_on_err(
11668        self,
11669        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11670    ) -> Result<(), fidl::Error> {
11671        let _result = self.send_raw(result);
11672        self.drop_without_shutdown();
11673        _result
11674    }
11675
11676    fn send_raw(
11677        &self,
11678        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11679    ) -> Result<(), fidl::Error> {
11680        self.control_handle.inner.send::<fidl::encoding::ResultType<
11681            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11682            fidl_fuchsia_posix::Errno,
11683        >>(
11684            result.map(|value| (value,)),
11685            self.tx_id,
11686            0x67ce6db6c2ec8966,
11687            fidl::encoding::DynamicFlags::empty(),
11688        )
11689    }
11690}
11691
11692#[must_use = "FIDL methods require a response to be sent"]
11693#[derive(Debug)]
11694pub struct SocketSetBindToDeviceResponder {
11695    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11696    tx_id: u32,
11697}
11698
11699/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11700/// if the responder is dropped without sending a response, so that the client
11701/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11702impl std::ops::Drop for SocketSetBindToDeviceResponder {
11703    fn drop(&mut self) {
11704        self.control_handle.shutdown();
11705        // Safety: drops once, never accessed again
11706        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11707    }
11708}
11709
11710impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11711    type ControlHandle = SocketControlHandle;
11712
11713    fn control_handle(&self) -> &SocketControlHandle {
11714        &self.control_handle
11715    }
11716
11717    fn drop_without_shutdown(mut self) {
11718        // Safety: drops once, never accessed again due to mem::forget
11719        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11720        // Prevent Drop from running (which would shut down the channel)
11721        std::mem::forget(self);
11722    }
11723}
11724
11725impl SocketSetBindToDeviceResponder {
11726    /// Sends a response to the FIDL transaction.
11727    ///
11728    /// Sets the channel to shutdown if an error occurs.
11729    pub fn send(
11730        self,
11731        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11732    ) -> Result<(), fidl::Error> {
11733        let _result = self.send_raw(result);
11734        if _result.is_err() {
11735            self.control_handle.shutdown();
11736        }
11737        self.drop_without_shutdown();
11738        _result
11739    }
11740
11741    /// Similar to "send" but does not shutdown the channel if an error occurs.
11742    pub fn send_no_shutdown_on_err(
11743        self,
11744        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11745    ) -> Result<(), fidl::Error> {
11746        let _result = self.send_raw(result);
11747        self.drop_without_shutdown();
11748        _result
11749    }
11750
11751    fn send_raw(
11752        &self,
11753        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11754    ) -> Result<(), fidl::Error> {
11755        self.control_handle.inner.send::<fidl::encoding::ResultType<
11756            fidl::encoding::EmptyStruct,
11757            fidl_fuchsia_posix::Errno,
11758        >>(
11759            result,
11760            self.tx_id,
11761            0x2118b483f28aafc4,
11762            fidl::encoding::DynamicFlags::empty(),
11763        )
11764    }
11765}
11766
11767#[must_use = "FIDL methods require a response to be sent"]
11768#[derive(Debug)]
11769pub struct SocketGetBindToDeviceResponder {
11770    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11771    tx_id: u32,
11772}
11773
11774/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11775/// if the responder is dropped without sending a response, so that the client
11776/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11777impl std::ops::Drop for SocketGetBindToDeviceResponder {
11778    fn drop(&mut self) {
11779        self.control_handle.shutdown();
11780        // Safety: drops once, never accessed again
11781        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11782    }
11783}
11784
11785impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11786    type ControlHandle = SocketControlHandle;
11787
11788    fn control_handle(&self) -> &SocketControlHandle {
11789        &self.control_handle
11790    }
11791
11792    fn drop_without_shutdown(mut self) {
11793        // Safety: drops once, never accessed again due to mem::forget
11794        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11795        // Prevent Drop from running (which would shut down the channel)
11796        std::mem::forget(self);
11797    }
11798}
11799
11800impl SocketGetBindToDeviceResponder {
11801    /// Sends a response to the FIDL transaction.
11802    ///
11803    /// Sets the channel to shutdown if an error occurs.
11804    pub fn send(
11805        self,
11806        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11807    ) -> Result<(), fidl::Error> {
11808        let _result = self.send_raw(result);
11809        if _result.is_err() {
11810            self.control_handle.shutdown();
11811        }
11812        self.drop_without_shutdown();
11813        _result
11814    }
11815
11816    /// Similar to "send" but does not shutdown the channel if an error occurs.
11817    pub fn send_no_shutdown_on_err(
11818        self,
11819        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11820    ) -> Result<(), fidl::Error> {
11821        let _result = self.send_raw(result);
11822        self.drop_without_shutdown();
11823        _result
11824    }
11825
11826    fn send_raw(
11827        &self,
11828        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11829    ) -> Result<(), fidl::Error> {
11830        self.control_handle.inner.send::<fidl::encoding::ResultType<
11831            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11832            fidl_fuchsia_posix::Errno,
11833        >>(
11834            result.map(|value| (value,)),
11835            self.tx_id,
11836            0x1ab1fbf0ef7906c8,
11837            fidl::encoding::DynamicFlags::empty(),
11838        )
11839    }
11840}
11841
11842#[must_use = "FIDL methods require a response to be sent"]
11843#[derive(Debug)]
11844pub struct SocketSetBindToInterfaceIndexResponder {
11845    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11846    tx_id: u32,
11847}
11848
11849/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11850/// if the responder is dropped without sending a response, so that the client
11851/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11852impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11853    fn drop(&mut self) {
11854        self.control_handle.shutdown();
11855        // Safety: drops once, never accessed again
11856        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11857    }
11858}
11859
11860impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11861    type ControlHandle = SocketControlHandle;
11862
11863    fn control_handle(&self) -> &SocketControlHandle {
11864        &self.control_handle
11865    }
11866
11867    fn drop_without_shutdown(mut self) {
11868        // Safety: drops once, never accessed again due to mem::forget
11869        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11870        // Prevent Drop from running (which would shut down the channel)
11871        std::mem::forget(self);
11872    }
11873}
11874
11875impl SocketSetBindToInterfaceIndexResponder {
11876    /// Sends a response to the FIDL transaction.
11877    ///
11878    /// Sets the channel to shutdown if an error occurs.
11879    pub fn send(
11880        self,
11881        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11882    ) -> Result<(), fidl::Error> {
11883        let _result = self.send_raw(result);
11884        if _result.is_err() {
11885            self.control_handle.shutdown();
11886        }
11887        self.drop_without_shutdown();
11888        _result
11889    }
11890
11891    /// Similar to "send" but does not shutdown the channel if an error occurs.
11892    pub fn send_no_shutdown_on_err(
11893        self,
11894        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11895    ) -> Result<(), fidl::Error> {
11896        let _result = self.send_raw(result);
11897        self.drop_without_shutdown();
11898        _result
11899    }
11900
11901    fn send_raw(
11902        &self,
11903        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11904    ) -> Result<(), fidl::Error> {
11905        self.control_handle.inner.send::<fidl::encoding::ResultType<
11906            fidl::encoding::EmptyStruct,
11907            fidl_fuchsia_posix::Errno,
11908        >>(
11909            result,
11910            self.tx_id,
11911            0x6e387a0def00821,
11912            fidl::encoding::DynamicFlags::empty(),
11913        )
11914    }
11915}
11916
11917#[must_use = "FIDL methods require a response to be sent"]
11918#[derive(Debug)]
11919pub struct SocketGetBindToInterfaceIndexResponder {
11920    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11921    tx_id: u32,
11922}
11923
11924/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11925/// if the responder is dropped without sending a response, so that the client
11926/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11927impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11928    fn drop(&mut self) {
11929        self.control_handle.shutdown();
11930        // Safety: drops once, never accessed again
11931        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11932    }
11933}
11934
11935impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11936    type ControlHandle = SocketControlHandle;
11937
11938    fn control_handle(&self) -> &SocketControlHandle {
11939        &self.control_handle
11940    }
11941
11942    fn drop_without_shutdown(mut self) {
11943        // Safety: drops once, never accessed again due to mem::forget
11944        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11945        // Prevent Drop from running (which would shut down the channel)
11946        std::mem::forget(self);
11947    }
11948}
11949
11950impl SocketGetBindToInterfaceIndexResponder {
11951    /// Sends a response to the FIDL transaction.
11952    ///
11953    /// Sets the channel to shutdown if an error occurs.
11954    pub fn send(
11955        self,
11956        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11957    ) -> Result<(), fidl::Error> {
11958        let _result = self.send_raw(result);
11959        if _result.is_err() {
11960            self.control_handle.shutdown();
11961        }
11962        self.drop_without_shutdown();
11963        _result
11964    }
11965
11966    /// Similar to "send" but does not shutdown the channel if an error occurs.
11967    pub fn send_no_shutdown_on_err(
11968        self,
11969        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11970    ) -> Result<(), fidl::Error> {
11971        let _result = self.send_raw(result);
11972        self.drop_without_shutdown();
11973        _result
11974    }
11975
11976    fn send_raw(
11977        &self,
11978        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11979    ) -> Result<(), fidl::Error> {
11980        self.control_handle.inner.send::<fidl::encoding::ResultType<
11981            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11982            fidl_fuchsia_posix::Errno,
11983        >>(
11984            result.map(|value| (value,)),
11985            self.tx_id,
11986            0x59c31dd3e3078295,
11987            fidl::encoding::DynamicFlags::empty(),
11988        )
11989    }
11990}
11991
11992#[must_use = "FIDL methods require a response to be sent"]
11993#[derive(Debug)]
11994pub struct SocketSetTimestampResponder {
11995    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11996    tx_id: u32,
11997}
11998
11999/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12000/// if the responder is dropped without sending a response, so that the client
12001/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12002impl std::ops::Drop for SocketSetTimestampResponder {
12003    fn drop(&mut self) {
12004        self.control_handle.shutdown();
12005        // Safety: drops once, never accessed again
12006        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12007    }
12008}
12009
12010impl fidl::endpoints::Responder for SocketSetTimestampResponder {
12011    type ControlHandle = SocketControlHandle;
12012
12013    fn control_handle(&self) -> &SocketControlHandle {
12014        &self.control_handle
12015    }
12016
12017    fn drop_without_shutdown(mut self) {
12018        // Safety: drops once, never accessed again due to mem::forget
12019        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12020        // Prevent Drop from running (which would shut down the channel)
12021        std::mem::forget(self);
12022    }
12023}
12024
12025impl SocketSetTimestampResponder {
12026    /// Sends a response to the FIDL transaction.
12027    ///
12028    /// Sets the channel to shutdown if an error occurs.
12029    pub fn send(
12030        self,
12031        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12032    ) -> Result<(), fidl::Error> {
12033        let _result = self.send_raw(result);
12034        if _result.is_err() {
12035            self.control_handle.shutdown();
12036        }
12037        self.drop_without_shutdown();
12038        _result
12039    }
12040
12041    /// Similar to "send" but does not shutdown the channel if an error occurs.
12042    pub fn send_no_shutdown_on_err(
12043        self,
12044        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12045    ) -> Result<(), fidl::Error> {
12046        let _result = self.send_raw(result);
12047        self.drop_without_shutdown();
12048        _result
12049    }
12050
12051    fn send_raw(
12052        &self,
12053        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12054    ) -> Result<(), fidl::Error> {
12055        self.control_handle.inner.send::<fidl::encoding::ResultType<
12056            fidl::encoding::EmptyStruct,
12057            fidl_fuchsia_posix::Errno,
12058        >>(
12059            result,
12060            self.tx_id,
12061            0x285d6516c263d839,
12062            fidl::encoding::DynamicFlags::empty(),
12063        )
12064    }
12065}
12066
12067#[must_use = "FIDL methods require a response to be sent"]
12068#[derive(Debug)]
12069pub struct SocketGetTimestampResponder {
12070    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12071    tx_id: u32,
12072}
12073
12074/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12075/// if the responder is dropped without sending a response, so that the client
12076/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12077impl std::ops::Drop for SocketGetTimestampResponder {
12078    fn drop(&mut self) {
12079        self.control_handle.shutdown();
12080        // Safety: drops once, never accessed again
12081        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12082    }
12083}
12084
12085impl fidl::endpoints::Responder for SocketGetTimestampResponder {
12086    type ControlHandle = SocketControlHandle;
12087
12088    fn control_handle(&self) -> &SocketControlHandle {
12089        &self.control_handle
12090    }
12091
12092    fn drop_without_shutdown(mut self) {
12093        // Safety: drops once, never accessed again due to mem::forget
12094        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12095        // Prevent Drop from running (which would shut down the channel)
12096        std::mem::forget(self);
12097    }
12098}
12099
12100impl SocketGetTimestampResponder {
12101    /// Sends a response to the FIDL transaction.
12102    ///
12103    /// Sets the channel to shutdown if an error occurs.
12104    pub fn send(
12105        self,
12106        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12107    ) -> Result<(), fidl::Error> {
12108        let _result = self.send_raw(result);
12109        if _result.is_err() {
12110            self.control_handle.shutdown();
12111        }
12112        self.drop_without_shutdown();
12113        _result
12114    }
12115
12116    /// Similar to "send" but does not shutdown the channel if an error occurs.
12117    pub fn send_no_shutdown_on_err(
12118        self,
12119        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12120    ) -> Result<(), fidl::Error> {
12121        let _result = self.send_raw(result);
12122        self.drop_without_shutdown();
12123        _result
12124    }
12125
12126    fn send_raw(
12127        &self,
12128        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12129    ) -> Result<(), fidl::Error> {
12130        self.control_handle.inner.send::<fidl::encoding::ResultType<
12131            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
12132            fidl_fuchsia_posix::Errno,
12133        >>(
12134            result.map(|value| (value,)),
12135            self.tx_id,
12136            0x49f2fffbbcc2bd27,
12137            fidl::encoding::DynamicFlags::empty(),
12138        )
12139    }
12140}
12141
12142#[must_use = "FIDL methods require a response to be sent"]
12143#[derive(Debug)]
12144pub struct SocketSetMarkResponder {
12145    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12146    tx_id: u32,
12147}
12148
12149/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12150/// if the responder is dropped without sending a response, so that the client
12151/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12152impl std::ops::Drop for SocketSetMarkResponder {
12153    fn drop(&mut self) {
12154        self.control_handle.shutdown();
12155        // Safety: drops once, never accessed again
12156        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12157    }
12158}
12159
12160impl fidl::endpoints::Responder for SocketSetMarkResponder {
12161    type ControlHandle = SocketControlHandle;
12162
12163    fn control_handle(&self) -> &SocketControlHandle {
12164        &self.control_handle
12165    }
12166
12167    fn drop_without_shutdown(mut self) {
12168        // Safety: drops once, never accessed again due to mem::forget
12169        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12170        // Prevent Drop from running (which would shut down the channel)
12171        std::mem::forget(self);
12172    }
12173}
12174
12175impl SocketSetMarkResponder {
12176    /// Sends a response to the FIDL transaction.
12177    ///
12178    /// Sets the channel to shutdown if an error occurs.
12179    pub fn send(
12180        self,
12181        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12182    ) -> Result<(), fidl::Error> {
12183        let _result = self.send_raw(result);
12184        if _result.is_err() {
12185            self.control_handle.shutdown();
12186        }
12187        self.drop_without_shutdown();
12188        _result
12189    }
12190
12191    /// Similar to "send" but does not shutdown the channel if an error occurs.
12192    pub fn send_no_shutdown_on_err(
12193        self,
12194        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12195    ) -> Result<(), fidl::Error> {
12196        let _result = self.send_raw(result);
12197        self.drop_without_shutdown();
12198        _result
12199    }
12200
12201    fn send_raw(
12202        &self,
12203        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12204    ) -> Result<(), fidl::Error> {
12205        self.control_handle.inner.send::<fidl::encoding::ResultType<
12206            fidl::encoding::EmptyStruct,
12207            fidl_fuchsia_posix::Errno,
12208        >>(
12209            result,
12210            self.tx_id,
12211            0x6ead6de09f653236,
12212            fidl::encoding::DynamicFlags::empty(),
12213        )
12214    }
12215}
12216
12217#[must_use = "FIDL methods require a response to be sent"]
12218#[derive(Debug)]
12219pub struct SocketGetMarkResponder {
12220    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12221    tx_id: u32,
12222}
12223
12224/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12225/// if the responder is dropped without sending a response, so that the client
12226/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12227impl std::ops::Drop for SocketGetMarkResponder {
12228    fn drop(&mut self) {
12229        self.control_handle.shutdown();
12230        // Safety: drops once, never accessed again
12231        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12232    }
12233}
12234
12235impl fidl::endpoints::Responder for SocketGetMarkResponder {
12236    type ControlHandle = SocketControlHandle;
12237
12238    fn control_handle(&self) -> &SocketControlHandle {
12239        &self.control_handle
12240    }
12241
12242    fn drop_without_shutdown(mut self) {
12243        // Safety: drops once, never accessed again due to mem::forget
12244        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12245        // Prevent Drop from running (which would shut down the channel)
12246        std::mem::forget(self);
12247    }
12248}
12249
12250impl SocketGetMarkResponder {
12251    /// Sends a response to the FIDL transaction.
12252    ///
12253    /// Sets the channel to shutdown if an error occurs.
12254    pub fn send(
12255        self,
12256        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12257    ) -> Result<(), fidl::Error> {
12258        let _result = self.send_raw(result);
12259        if _result.is_err() {
12260            self.control_handle.shutdown();
12261        }
12262        self.drop_without_shutdown();
12263        _result
12264    }
12265
12266    /// Similar to "send" but does not shutdown the channel if an error occurs.
12267    pub fn send_no_shutdown_on_err(
12268        self,
12269        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12270    ) -> Result<(), fidl::Error> {
12271        let _result = self.send_raw(result);
12272        self.drop_without_shutdown();
12273        _result
12274    }
12275
12276    fn send_raw(
12277        &self,
12278        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12279    ) -> Result<(), fidl::Error> {
12280        self.control_handle.inner.send::<fidl::encoding::ResultType<
12281            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
12282            fidl_fuchsia_posix::Errno,
12283        >>(
12284            result.map(|mark| (mark,)),
12285            self.tx_id,
12286            0x57a2752c61d93d47,
12287            fidl::encoding::DynamicFlags::empty(),
12288        )
12289    }
12290}
12291
12292#[must_use = "FIDL methods require a response to be sent"]
12293#[derive(Debug)]
12294pub struct SocketGetCookieResponder {
12295    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12296    tx_id: u32,
12297}
12298
12299/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12300/// if the responder is dropped without sending a response, so that the client
12301/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12302impl std::ops::Drop for SocketGetCookieResponder {
12303    fn drop(&mut self) {
12304        self.control_handle.shutdown();
12305        // Safety: drops once, never accessed again
12306        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12307    }
12308}
12309
12310impl fidl::endpoints::Responder for SocketGetCookieResponder {
12311    type ControlHandle = SocketControlHandle;
12312
12313    fn control_handle(&self) -> &SocketControlHandle {
12314        &self.control_handle
12315    }
12316
12317    fn drop_without_shutdown(mut self) {
12318        // Safety: drops once, never accessed again due to mem::forget
12319        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12320        // Prevent Drop from running (which would shut down the channel)
12321        std::mem::forget(self);
12322    }
12323}
12324
12325impl SocketGetCookieResponder {
12326    /// Sends a response to the FIDL transaction.
12327    ///
12328    /// Sets the channel to shutdown if an error occurs.
12329    pub fn send(
12330        self,
12331        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12332    ) -> Result<(), fidl::Error> {
12333        let _result = self.send_raw(result);
12334        if _result.is_err() {
12335            self.control_handle.shutdown();
12336        }
12337        self.drop_without_shutdown();
12338        _result
12339    }
12340
12341    /// Similar to "send" but does not shutdown the channel if an error occurs.
12342    pub fn send_no_shutdown_on_err(
12343        self,
12344        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12345    ) -> Result<(), fidl::Error> {
12346        let _result = self.send_raw(result);
12347        self.drop_without_shutdown();
12348        _result
12349    }
12350
12351    fn send_raw(
12352        &self,
12353        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12354    ) -> Result<(), fidl::Error> {
12355        self.control_handle.inner.send::<fidl::encoding::ResultType<
12356            fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
12357            fidl_fuchsia_posix::Errno,
12358        >>(
12359            result.map(|value| (value,)),
12360            self.tx_id,
12361            0x2c2f47fd8f924e52,
12362            fidl::encoding::DynamicFlags::empty(),
12363        )
12364    }
12365}
12366
12367#[must_use = "FIDL methods require a response to be sent"]
12368#[derive(Debug)]
12369pub struct SocketBindResponder {
12370    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12371    tx_id: u32,
12372}
12373
12374/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12375/// if the responder is dropped without sending a response, so that the client
12376/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12377impl std::ops::Drop for SocketBindResponder {
12378    fn drop(&mut self) {
12379        self.control_handle.shutdown();
12380        // Safety: drops once, never accessed again
12381        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12382    }
12383}
12384
12385impl fidl::endpoints::Responder for SocketBindResponder {
12386    type ControlHandle = SocketControlHandle;
12387
12388    fn control_handle(&self) -> &SocketControlHandle {
12389        &self.control_handle
12390    }
12391
12392    fn drop_without_shutdown(mut self) {
12393        // Safety: drops once, never accessed again due to mem::forget
12394        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12395        // Prevent Drop from running (which would shut down the channel)
12396        std::mem::forget(self);
12397    }
12398}
12399
12400impl SocketBindResponder {
12401    /// Sends a response to the FIDL transaction.
12402    ///
12403    /// Sets the channel to shutdown if an error occurs.
12404    pub fn send(
12405        self,
12406        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12407    ) -> Result<(), fidl::Error> {
12408        let _result = self.send_raw(result);
12409        if _result.is_err() {
12410            self.control_handle.shutdown();
12411        }
12412        self.drop_without_shutdown();
12413        _result
12414    }
12415
12416    /// Similar to "send" but does not shutdown the channel if an error occurs.
12417    pub fn send_no_shutdown_on_err(
12418        self,
12419        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12420    ) -> Result<(), fidl::Error> {
12421        let _result = self.send_raw(result);
12422        self.drop_without_shutdown();
12423        _result
12424    }
12425
12426    fn send_raw(
12427        &self,
12428        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12429    ) -> Result<(), fidl::Error> {
12430        self.control_handle.inner.send::<fidl::encoding::ResultType<
12431            fidl::encoding::EmptyStruct,
12432            fidl_fuchsia_posix::Errno,
12433        >>(
12434            result,
12435            self.tx_id,
12436            0x4bc6400ae92125d,
12437            fidl::encoding::DynamicFlags::empty(),
12438        )
12439    }
12440}
12441
12442#[must_use = "FIDL methods require a response to be sent"]
12443#[derive(Debug)]
12444pub struct SocketConnectResponder {
12445    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12446    tx_id: u32,
12447}
12448
12449/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12450/// if the responder is dropped without sending a response, so that the client
12451/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12452impl std::ops::Drop for SocketConnectResponder {
12453    fn drop(&mut self) {
12454        self.control_handle.shutdown();
12455        // Safety: drops once, never accessed again
12456        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12457    }
12458}
12459
12460impl fidl::endpoints::Responder for SocketConnectResponder {
12461    type ControlHandle = SocketControlHandle;
12462
12463    fn control_handle(&self) -> &SocketControlHandle {
12464        &self.control_handle
12465    }
12466
12467    fn drop_without_shutdown(mut self) {
12468        // Safety: drops once, never accessed again due to mem::forget
12469        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12470        // Prevent Drop from running (which would shut down the channel)
12471        std::mem::forget(self);
12472    }
12473}
12474
12475impl SocketConnectResponder {
12476    /// Sends a response to the FIDL transaction.
12477    ///
12478    /// Sets the channel to shutdown if an error occurs.
12479    pub fn send(
12480        self,
12481        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12482    ) -> Result<(), fidl::Error> {
12483        let _result = self.send_raw(result);
12484        if _result.is_err() {
12485            self.control_handle.shutdown();
12486        }
12487        self.drop_without_shutdown();
12488        _result
12489    }
12490
12491    /// Similar to "send" but does not shutdown the channel if an error occurs.
12492    pub fn send_no_shutdown_on_err(
12493        self,
12494        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12495    ) -> Result<(), fidl::Error> {
12496        let _result = self.send_raw(result);
12497        self.drop_without_shutdown();
12498        _result
12499    }
12500
12501    fn send_raw(
12502        &self,
12503        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12504    ) -> Result<(), fidl::Error> {
12505        self.control_handle.inner.send::<fidl::encoding::ResultType<
12506            fidl::encoding::EmptyStruct,
12507            fidl_fuchsia_posix::Errno,
12508        >>(
12509            result,
12510            self.tx_id,
12511            0x5f05f19bfdd38871,
12512            fidl::encoding::DynamicFlags::empty(),
12513        )
12514    }
12515}
12516
12517#[must_use = "FIDL methods require a response to be sent"]
12518#[derive(Debug)]
12519pub struct SocketDisconnectResponder {
12520    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12521    tx_id: u32,
12522}
12523
12524/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12525/// if the responder is dropped without sending a response, so that the client
12526/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12527impl std::ops::Drop for SocketDisconnectResponder {
12528    fn drop(&mut self) {
12529        self.control_handle.shutdown();
12530        // Safety: drops once, never accessed again
12531        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12532    }
12533}
12534
12535impl fidl::endpoints::Responder for SocketDisconnectResponder {
12536    type ControlHandle = SocketControlHandle;
12537
12538    fn control_handle(&self) -> &SocketControlHandle {
12539        &self.control_handle
12540    }
12541
12542    fn drop_without_shutdown(mut self) {
12543        // Safety: drops once, never accessed again due to mem::forget
12544        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12545        // Prevent Drop from running (which would shut down the channel)
12546        std::mem::forget(self);
12547    }
12548}
12549
12550impl SocketDisconnectResponder {
12551    /// Sends a response to the FIDL transaction.
12552    ///
12553    /// Sets the channel to shutdown if an error occurs.
12554    pub fn send(
12555        self,
12556        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12557    ) -> Result<(), fidl::Error> {
12558        let _result = self.send_raw(result);
12559        if _result.is_err() {
12560            self.control_handle.shutdown();
12561        }
12562        self.drop_without_shutdown();
12563        _result
12564    }
12565
12566    /// Similar to "send" but does not shutdown the channel if an error occurs.
12567    pub fn send_no_shutdown_on_err(
12568        self,
12569        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12570    ) -> Result<(), fidl::Error> {
12571        let _result = self.send_raw(result);
12572        self.drop_without_shutdown();
12573        _result
12574    }
12575
12576    fn send_raw(
12577        &self,
12578        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12579    ) -> Result<(), fidl::Error> {
12580        self.control_handle.inner.send::<fidl::encoding::ResultType<
12581            fidl::encoding::EmptyStruct,
12582            fidl_fuchsia_posix::Errno,
12583        >>(
12584            result,
12585            self.tx_id,
12586            0x74e63b91f7b29b2,
12587            fidl::encoding::DynamicFlags::empty(),
12588        )
12589    }
12590}
12591
12592#[must_use = "FIDL methods require a response to be sent"]
12593#[derive(Debug)]
12594pub struct SocketGetSockNameResponder {
12595    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12596    tx_id: u32,
12597}
12598
12599/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12600/// if the responder is dropped without sending a response, so that the client
12601/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12602impl std::ops::Drop for SocketGetSockNameResponder {
12603    fn drop(&mut self) {
12604        self.control_handle.shutdown();
12605        // Safety: drops once, never accessed again
12606        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12607    }
12608}
12609
12610impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12611    type ControlHandle = SocketControlHandle;
12612
12613    fn control_handle(&self) -> &SocketControlHandle {
12614        &self.control_handle
12615    }
12616
12617    fn drop_without_shutdown(mut self) {
12618        // Safety: drops once, never accessed again due to mem::forget
12619        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12620        // Prevent Drop from running (which would shut down the channel)
12621        std::mem::forget(self);
12622    }
12623}
12624
12625impl SocketGetSockNameResponder {
12626    /// Sends a response to the FIDL transaction.
12627    ///
12628    /// Sets the channel to shutdown if an error occurs.
12629    pub fn send(
12630        self,
12631        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12632    ) -> Result<(), fidl::Error> {
12633        let _result = self.send_raw(result);
12634        if _result.is_err() {
12635            self.control_handle.shutdown();
12636        }
12637        self.drop_without_shutdown();
12638        _result
12639    }
12640
12641    /// Similar to "send" but does not shutdown the channel if an error occurs.
12642    pub fn send_no_shutdown_on_err(
12643        self,
12644        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12645    ) -> Result<(), fidl::Error> {
12646        let _result = self.send_raw(result);
12647        self.drop_without_shutdown();
12648        _result
12649    }
12650
12651    fn send_raw(
12652        &self,
12653        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12654    ) -> Result<(), fidl::Error> {
12655        self.control_handle.inner.send::<fidl::encoding::ResultType<
12656            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12657            fidl_fuchsia_posix::Errno,
12658        >>(
12659            result.map(|addr| (addr,)),
12660            self.tx_id,
12661            0x475f23f84a1a4f85,
12662            fidl::encoding::DynamicFlags::empty(),
12663        )
12664    }
12665}
12666
12667#[must_use = "FIDL methods require a response to be sent"]
12668#[derive(Debug)]
12669pub struct SocketGetPeerNameResponder {
12670    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12671    tx_id: u32,
12672}
12673
12674/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12675/// if the responder is dropped without sending a response, so that the client
12676/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12677impl std::ops::Drop for SocketGetPeerNameResponder {
12678    fn drop(&mut self) {
12679        self.control_handle.shutdown();
12680        // Safety: drops once, never accessed again
12681        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12682    }
12683}
12684
12685impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12686    type ControlHandle = SocketControlHandle;
12687
12688    fn control_handle(&self) -> &SocketControlHandle {
12689        &self.control_handle
12690    }
12691
12692    fn drop_without_shutdown(mut self) {
12693        // Safety: drops once, never accessed again due to mem::forget
12694        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12695        // Prevent Drop from running (which would shut down the channel)
12696        std::mem::forget(self);
12697    }
12698}
12699
12700impl SocketGetPeerNameResponder {
12701    /// Sends a response to the FIDL transaction.
12702    ///
12703    /// Sets the channel to shutdown if an error occurs.
12704    pub fn send(
12705        self,
12706        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12707    ) -> Result<(), fidl::Error> {
12708        let _result = self.send_raw(result);
12709        if _result.is_err() {
12710            self.control_handle.shutdown();
12711        }
12712        self.drop_without_shutdown();
12713        _result
12714    }
12715
12716    /// Similar to "send" but does not shutdown the channel if an error occurs.
12717    pub fn send_no_shutdown_on_err(
12718        self,
12719        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12720    ) -> Result<(), fidl::Error> {
12721        let _result = self.send_raw(result);
12722        self.drop_without_shutdown();
12723        _result
12724    }
12725
12726    fn send_raw(
12727        &self,
12728        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12729    ) -> Result<(), fidl::Error> {
12730        self.control_handle.inner.send::<fidl::encoding::ResultType<
12731            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12732            fidl_fuchsia_posix::Errno,
12733        >>(
12734            result.map(|addr| (addr,)),
12735            self.tx_id,
12736            0x1ffecf4bd5b6432e,
12737            fidl::encoding::DynamicFlags::empty(),
12738        )
12739    }
12740}
12741
12742#[must_use = "FIDL methods require a response to be sent"]
12743#[derive(Debug)]
12744pub struct SocketShutdownResponder {
12745    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12746    tx_id: u32,
12747}
12748
12749/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12750/// if the responder is dropped without sending a response, so that the client
12751/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12752impl std::ops::Drop for SocketShutdownResponder {
12753    fn drop(&mut self) {
12754        self.control_handle.shutdown();
12755        // Safety: drops once, never accessed again
12756        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12757    }
12758}
12759
12760impl fidl::endpoints::Responder for SocketShutdownResponder {
12761    type ControlHandle = SocketControlHandle;
12762
12763    fn control_handle(&self) -> &SocketControlHandle {
12764        &self.control_handle
12765    }
12766
12767    fn drop_without_shutdown(mut self) {
12768        // Safety: drops once, never accessed again due to mem::forget
12769        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12770        // Prevent Drop from running (which would shut down the channel)
12771        std::mem::forget(self);
12772    }
12773}
12774
12775impl SocketShutdownResponder {
12776    /// Sends a response to the FIDL transaction.
12777    ///
12778    /// Sets the channel to shutdown if an error occurs.
12779    pub fn send(
12780        self,
12781        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12782    ) -> Result<(), fidl::Error> {
12783        let _result = self.send_raw(result);
12784        if _result.is_err() {
12785            self.control_handle.shutdown();
12786        }
12787        self.drop_without_shutdown();
12788        _result
12789    }
12790
12791    /// Similar to "send" but does not shutdown the channel if an error occurs.
12792    pub fn send_no_shutdown_on_err(
12793        self,
12794        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12795    ) -> Result<(), fidl::Error> {
12796        let _result = self.send_raw(result);
12797        self.drop_without_shutdown();
12798        _result
12799    }
12800
12801    fn send_raw(
12802        &self,
12803        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12804    ) -> Result<(), fidl::Error> {
12805        self.control_handle.inner.send::<fidl::encoding::ResultType<
12806            fidl::encoding::EmptyStruct,
12807            fidl_fuchsia_posix::Errno,
12808        >>(
12809            result,
12810            self.tx_id,
12811            0x247f38b6db68c336,
12812            fidl::encoding::DynamicFlags::empty(),
12813        )
12814    }
12815}
12816
12817#[must_use = "FIDL methods require a response to be sent"]
12818#[derive(Debug)]
12819pub struct SocketSetIpTypeOfServiceResponder {
12820    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12821    tx_id: u32,
12822}
12823
12824/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12825/// if the responder is dropped without sending a response, so that the client
12826/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12827impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12828    fn drop(&mut self) {
12829        self.control_handle.shutdown();
12830        // Safety: drops once, never accessed again
12831        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12832    }
12833}
12834
12835impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12836    type ControlHandle = SocketControlHandle;
12837
12838    fn control_handle(&self) -> &SocketControlHandle {
12839        &self.control_handle
12840    }
12841
12842    fn drop_without_shutdown(mut self) {
12843        // Safety: drops once, never accessed again due to mem::forget
12844        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12845        // Prevent Drop from running (which would shut down the channel)
12846        std::mem::forget(self);
12847    }
12848}
12849
12850impl SocketSetIpTypeOfServiceResponder {
12851    /// Sends a response to the FIDL transaction.
12852    ///
12853    /// Sets the channel to shutdown if an error occurs.
12854    pub fn send(
12855        self,
12856        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12857    ) -> Result<(), fidl::Error> {
12858        let _result = self.send_raw(result);
12859        if _result.is_err() {
12860            self.control_handle.shutdown();
12861        }
12862        self.drop_without_shutdown();
12863        _result
12864    }
12865
12866    /// Similar to "send" but does not shutdown the channel if an error occurs.
12867    pub fn send_no_shutdown_on_err(
12868        self,
12869        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12870    ) -> Result<(), fidl::Error> {
12871        let _result = self.send_raw(result);
12872        self.drop_without_shutdown();
12873        _result
12874    }
12875
12876    fn send_raw(
12877        &self,
12878        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12879    ) -> Result<(), fidl::Error> {
12880        self.control_handle.inner.send::<fidl::encoding::ResultType<
12881            fidl::encoding::EmptyStruct,
12882            fidl_fuchsia_posix::Errno,
12883        >>(
12884            result,
12885            self.tx_id,
12886            0x995c600475b6d46,
12887            fidl::encoding::DynamicFlags::empty(),
12888        )
12889    }
12890}
12891
12892#[must_use = "FIDL methods require a response to be sent"]
12893#[derive(Debug)]
12894pub struct SocketGetIpTypeOfServiceResponder {
12895    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12896    tx_id: u32,
12897}
12898
12899/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12900/// if the responder is dropped without sending a response, so that the client
12901/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12902impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12903    fn drop(&mut self) {
12904        self.control_handle.shutdown();
12905        // Safety: drops once, never accessed again
12906        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12907    }
12908}
12909
12910impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12911    type ControlHandle = SocketControlHandle;
12912
12913    fn control_handle(&self) -> &SocketControlHandle {
12914        &self.control_handle
12915    }
12916
12917    fn drop_without_shutdown(mut self) {
12918        // Safety: drops once, never accessed again due to mem::forget
12919        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12920        // Prevent Drop from running (which would shut down the channel)
12921        std::mem::forget(self);
12922    }
12923}
12924
12925impl SocketGetIpTypeOfServiceResponder {
12926    /// Sends a response to the FIDL transaction.
12927    ///
12928    /// Sets the channel to shutdown if an error occurs.
12929    pub fn send(
12930        self,
12931        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12932    ) -> Result<(), fidl::Error> {
12933        let _result = self.send_raw(result);
12934        if _result.is_err() {
12935            self.control_handle.shutdown();
12936        }
12937        self.drop_without_shutdown();
12938        _result
12939    }
12940
12941    /// Similar to "send" but does not shutdown the channel if an error occurs.
12942    pub fn send_no_shutdown_on_err(
12943        self,
12944        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12945    ) -> Result<(), fidl::Error> {
12946        let _result = self.send_raw(result);
12947        self.drop_without_shutdown();
12948        _result
12949    }
12950
12951    fn send_raw(
12952        &self,
12953        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12954    ) -> Result<(), fidl::Error> {
12955        self.control_handle.inner.send::<fidl::encoding::ResultType<
12956            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12957            fidl_fuchsia_posix::Errno,
12958        >>(
12959            result.map(|value| (value,)),
12960            self.tx_id,
12961            0x3814a04259f75fcb,
12962            fidl::encoding::DynamicFlags::empty(),
12963        )
12964    }
12965}
12966
12967#[must_use = "FIDL methods require a response to be sent"]
12968#[derive(Debug)]
12969pub struct SocketSetIpTtlResponder {
12970    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12971    tx_id: u32,
12972}
12973
12974/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12975/// if the responder is dropped without sending a response, so that the client
12976/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12977impl std::ops::Drop for SocketSetIpTtlResponder {
12978    fn drop(&mut self) {
12979        self.control_handle.shutdown();
12980        // Safety: drops once, never accessed again
12981        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12982    }
12983}
12984
12985impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12986    type ControlHandle = SocketControlHandle;
12987
12988    fn control_handle(&self) -> &SocketControlHandle {
12989        &self.control_handle
12990    }
12991
12992    fn drop_without_shutdown(mut self) {
12993        // Safety: drops once, never accessed again due to mem::forget
12994        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12995        // Prevent Drop from running (which would shut down the channel)
12996        std::mem::forget(self);
12997    }
12998}
12999
13000impl SocketSetIpTtlResponder {
13001    /// Sends a response to the FIDL transaction.
13002    ///
13003    /// Sets the channel to shutdown if an error occurs.
13004    pub fn send(
13005        self,
13006        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13007    ) -> Result<(), fidl::Error> {
13008        let _result = self.send_raw(result);
13009        if _result.is_err() {
13010            self.control_handle.shutdown();
13011        }
13012        self.drop_without_shutdown();
13013        _result
13014    }
13015
13016    /// Similar to "send" but does not shutdown the channel if an error occurs.
13017    pub fn send_no_shutdown_on_err(
13018        self,
13019        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13020    ) -> Result<(), fidl::Error> {
13021        let _result = self.send_raw(result);
13022        self.drop_without_shutdown();
13023        _result
13024    }
13025
13026    fn send_raw(
13027        &self,
13028        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13029    ) -> Result<(), fidl::Error> {
13030        self.control_handle.inner.send::<fidl::encoding::ResultType<
13031            fidl::encoding::EmptyStruct,
13032            fidl_fuchsia_posix::Errno,
13033        >>(
13034            result,
13035            self.tx_id,
13036            0x29e2424b433ae1ef,
13037            fidl::encoding::DynamicFlags::empty(),
13038        )
13039    }
13040}
13041
13042#[must_use = "FIDL methods require a response to be sent"]
13043#[derive(Debug)]
13044pub struct SocketGetIpTtlResponder {
13045    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13046    tx_id: u32,
13047}
13048
13049/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13050/// if the responder is dropped without sending a response, so that the client
13051/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13052impl std::ops::Drop for SocketGetIpTtlResponder {
13053    fn drop(&mut self) {
13054        self.control_handle.shutdown();
13055        // Safety: drops once, never accessed again
13056        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13057    }
13058}
13059
13060impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
13061    type ControlHandle = SocketControlHandle;
13062
13063    fn control_handle(&self) -> &SocketControlHandle {
13064        &self.control_handle
13065    }
13066
13067    fn drop_without_shutdown(mut self) {
13068        // Safety: drops once, never accessed again due to mem::forget
13069        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13070        // Prevent Drop from running (which would shut down the channel)
13071        std::mem::forget(self);
13072    }
13073}
13074
13075impl SocketGetIpTtlResponder {
13076    /// Sends a response to the FIDL transaction.
13077    ///
13078    /// Sets the channel to shutdown if an error occurs.
13079    pub fn send(
13080        self,
13081        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13082    ) -> Result<(), fidl::Error> {
13083        let _result = self.send_raw(result);
13084        if _result.is_err() {
13085            self.control_handle.shutdown();
13086        }
13087        self.drop_without_shutdown();
13088        _result
13089    }
13090
13091    /// Similar to "send" but does not shutdown the channel if an error occurs.
13092    pub fn send_no_shutdown_on_err(
13093        self,
13094        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13095    ) -> Result<(), fidl::Error> {
13096        let _result = self.send_raw(result);
13097        self.drop_without_shutdown();
13098        _result
13099    }
13100
13101    fn send_raw(
13102        &self,
13103        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13104    ) -> Result<(), fidl::Error> {
13105        self.control_handle.inner.send::<fidl::encoding::ResultType<
13106            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
13107            fidl_fuchsia_posix::Errno,
13108        >>(
13109            result.map(|value| (value,)),
13110            self.tx_id,
13111            0x47e47fa1f24da471,
13112            fidl::encoding::DynamicFlags::empty(),
13113        )
13114    }
13115}
13116
13117#[must_use = "FIDL methods require a response to be sent"]
13118#[derive(Debug)]
13119pub struct SocketSetIpPacketInfoResponder {
13120    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13121    tx_id: u32,
13122}
13123
13124/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13125/// if the responder is dropped without sending a response, so that the client
13126/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13127impl std::ops::Drop for SocketSetIpPacketInfoResponder {
13128    fn drop(&mut self) {
13129        self.control_handle.shutdown();
13130        // Safety: drops once, never accessed again
13131        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13132    }
13133}
13134
13135impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
13136    type ControlHandle = SocketControlHandle;
13137
13138    fn control_handle(&self) -> &SocketControlHandle {
13139        &self.control_handle
13140    }
13141
13142    fn drop_without_shutdown(mut self) {
13143        // Safety: drops once, never accessed again due to mem::forget
13144        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13145        // Prevent Drop from running (which would shut down the channel)
13146        std::mem::forget(self);
13147    }
13148}
13149
13150impl SocketSetIpPacketInfoResponder {
13151    /// Sends a response to the FIDL transaction.
13152    ///
13153    /// Sets the channel to shutdown if an error occurs.
13154    pub fn send(
13155        self,
13156        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13157    ) -> Result<(), fidl::Error> {
13158        let _result = self.send_raw(result);
13159        if _result.is_err() {
13160            self.control_handle.shutdown();
13161        }
13162        self.drop_without_shutdown();
13163        _result
13164    }
13165
13166    /// Similar to "send" but does not shutdown the channel if an error occurs.
13167    pub fn send_no_shutdown_on_err(
13168        self,
13169        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13170    ) -> Result<(), fidl::Error> {
13171        let _result = self.send_raw(result);
13172        self.drop_without_shutdown();
13173        _result
13174    }
13175
13176    fn send_raw(
13177        &self,
13178        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13179    ) -> Result<(), fidl::Error> {
13180        self.control_handle.inner.send::<fidl::encoding::ResultType<
13181            fidl::encoding::EmptyStruct,
13182            fidl_fuchsia_posix::Errno,
13183        >>(
13184            result,
13185            self.tx_id,
13186            0x392d16bee20c0e16,
13187            fidl::encoding::DynamicFlags::empty(),
13188        )
13189    }
13190}
13191
13192#[must_use = "FIDL methods require a response to be sent"]
13193#[derive(Debug)]
13194pub struct SocketGetIpPacketInfoResponder {
13195    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13196    tx_id: u32,
13197}
13198
13199/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13200/// if the responder is dropped without sending a response, so that the client
13201/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13202impl std::ops::Drop for SocketGetIpPacketInfoResponder {
13203    fn drop(&mut self) {
13204        self.control_handle.shutdown();
13205        // Safety: drops once, never accessed again
13206        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13207    }
13208}
13209
13210impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
13211    type ControlHandle = SocketControlHandle;
13212
13213    fn control_handle(&self) -> &SocketControlHandle {
13214        &self.control_handle
13215    }
13216
13217    fn drop_without_shutdown(mut self) {
13218        // Safety: drops once, never accessed again due to mem::forget
13219        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13220        // Prevent Drop from running (which would shut down the channel)
13221        std::mem::forget(self);
13222    }
13223}
13224
13225impl SocketGetIpPacketInfoResponder {
13226    /// Sends a response to the FIDL transaction.
13227    ///
13228    /// Sets the channel to shutdown if an error occurs.
13229    pub fn send(
13230        self,
13231        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13232    ) -> Result<(), fidl::Error> {
13233        let _result = self.send_raw(result);
13234        if _result.is_err() {
13235            self.control_handle.shutdown();
13236        }
13237        self.drop_without_shutdown();
13238        _result
13239    }
13240
13241    /// Similar to "send" but does not shutdown the channel if an error occurs.
13242    pub fn send_no_shutdown_on_err(
13243        self,
13244        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13245    ) -> Result<(), fidl::Error> {
13246        let _result = self.send_raw(result);
13247        self.drop_without_shutdown();
13248        _result
13249    }
13250
13251    fn send_raw(
13252        &self,
13253        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13254    ) -> Result<(), fidl::Error> {
13255        self.control_handle.inner.send::<fidl::encoding::ResultType<
13256            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
13257            fidl_fuchsia_posix::Errno,
13258        >>(
13259            result.map(|value| (value,)),
13260            self.tx_id,
13261            0x54b505f242280740,
13262            fidl::encoding::DynamicFlags::empty(),
13263        )
13264    }
13265}
13266
13267#[must_use = "FIDL methods require a response to be sent"]
13268#[derive(Debug)]
13269pub struct SocketSetIpReceiveTypeOfServiceResponder {
13270    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13271    tx_id: u32,
13272}
13273
13274/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13275/// if the responder is dropped without sending a response, so that the client
13276/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13277impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
13278    fn drop(&mut self) {
13279        self.control_handle.shutdown();
13280        // Safety: drops once, never accessed again
13281        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13282    }
13283}
13284
13285impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
13286    type ControlHandle = SocketControlHandle;
13287
13288    fn control_handle(&self) -> &SocketControlHandle {
13289        &self.control_handle
13290    }
13291
13292    fn drop_without_shutdown(mut self) {
13293        // Safety: drops once, never accessed again due to mem::forget
13294        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13295        // Prevent Drop from running (which would shut down the channel)
13296        std::mem::forget(self);
13297    }
13298}
13299
13300impl SocketSetIpReceiveTypeOfServiceResponder {
13301    /// Sends a response to the FIDL transaction.
13302    ///
13303    /// Sets the channel to shutdown if an error occurs.
13304    pub fn send(
13305        self,
13306        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13307    ) -> Result<(), fidl::Error> {
13308        let _result = self.send_raw(result);
13309        if _result.is_err() {
13310            self.control_handle.shutdown();
13311        }
13312        self.drop_without_shutdown();
13313        _result
13314    }
13315
13316    /// Similar to "send" but does not shutdown the channel if an error occurs.
13317    pub fn send_no_shutdown_on_err(
13318        self,
13319        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13320    ) -> Result<(), fidl::Error> {
13321        let _result = self.send_raw(result);
13322        self.drop_without_shutdown();
13323        _result
13324    }
13325
13326    fn send_raw(
13327        &self,
13328        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13329    ) -> Result<(), fidl::Error> {
13330        self.control_handle.inner.send::<fidl::encoding::ResultType<
13331            fidl::encoding::EmptyStruct,
13332            fidl_fuchsia_posix::Errno,
13333        >>(
13334            result,
13335            self.tx_id,
13336            0x6c4f6714995f84ef,
13337            fidl::encoding::DynamicFlags::empty(),
13338        )
13339    }
13340}
13341
13342#[must_use = "FIDL methods require a response to be sent"]
13343#[derive(Debug)]
13344pub struct SocketGetIpReceiveTypeOfServiceResponder {
13345    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13346    tx_id: u32,
13347}
13348
13349/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13350/// if the responder is dropped without sending a response, so that the client
13351/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13352impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13353    fn drop(&mut self) {
13354        self.control_handle.shutdown();
13355        // Safety: drops once, never accessed again
13356        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13357    }
13358}
13359
13360impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13361    type ControlHandle = SocketControlHandle;
13362
13363    fn control_handle(&self) -> &SocketControlHandle {
13364        &self.control_handle
13365    }
13366
13367    fn drop_without_shutdown(mut self) {
13368        // Safety: drops once, never accessed again due to mem::forget
13369        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13370        // Prevent Drop from running (which would shut down the channel)
13371        std::mem::forget(self);
13372    }
13373}
13374
13375impl SocketGetIpReceiveTypeOfServiceResponder {
13376    /// Sends a response to the FIDL transaction.
13377    ///
13378    /// Sets the channel to shutdown if an error occurs.
13379    pub fn send(
13380        self,
13381        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13382    ) -> Result<(), fidl::Error> {
13383        let _result = self.send_raw(result);
13384        if _result.is_err() {
13385            self.control_handle.shutdown();
13386        }
13387        self.drop_without_shutdown();
13388        _result
13389    }
13390
13391    /// Similar to "send" but does not shutdown the channel if an error occurs.
13392    pub fn send_no_shutdown_on_err(
13393        self,
13394        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13395    ) -> Result<(), fidl::Error> {
13396        let _result = self.send_raw(result);
13397        self.drop_without_shutdown();
13398        _result
13399    }
13400
13401    fn send_raw(
13402        &self,
13403        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13404    ) -> Result<(), fidl::Error> {
13405        self.control_handle.inner.send::<fidl::encoding::ResultType<
13406            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13407            fidl_fuchsia_posix::Errno,
13408        >>(
13409            result.map(|value| (value,)),
13410            self.tx_id,
13411            0x4158ba7dc2795960,
13412            fidl::encoding::DynamicFlags::empty(),
13413        )
13414    }
13415}
13416
13417#[must_use = "FIDL methods require a response to be sent"]
13418#[derive(Debug)]
13419pub struct SocketSetIpReceiveTtlResponder {
13420    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13421    tx_id: u32,
13422}
13423
13424/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13425/// if the responder is dropped without sending a response, so that the client
13426/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13427impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13428    fn drop(&mut self) {
13429        self.control_handle.shutdown();
13430        // Safety: drops once, never accessed again
13431        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13432    }
13433}
13434
13435impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13436    type ControlHandle = SocketControlHandle;
13437
13438    fn control_handle(&self) -> &SocketControlHandle {
13439        &self.control_handle
13440    }
13441
13442    fn drop_without_shutdown(mut self) {
13443        // Safety: drops once, never accessed again due to mem::forget
13444        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13445        // Prevent Drop from running (which would shut down the channel)
13446        std::mem::forget(self);
13447    }
13448}
13449
13450impl SocketSetIpReceiveTtlResponder {
13451    /// Sends a response to the FIDL transaction.
13452    ///
13453    /// Sets the channel to shutdown if an error occurs.
13454    pub fn send(
13455        self,
13456        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13457    ) -> Result<(), fidl::Error> {
13458        let _result = self.send_raw(result);
13459        if _result.is_err() {
13460            self.control_handle.shutdown();
13461        }
13462        self.drop_without_shutdown();
13463        _result
13464    }
13465
13466    /// Similar to "send" but does not shutdown the channel if an error occurs.
13467    pub fn send_no_shutdown_on_err(
13468        self,
13469        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13470    ) -> Result<(), fidl::Error> {
13471        let _result = self.send_raw(result);
13472        self.drop_without_shutdown();
13473        _result
13474    }
13475
13476    fn send_raw(
13477        &self,
13478        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13479    ) -> Result<(), fidl::Error> {
13480        self.control_handle.inner.send::<fidl::encoding::ResultType<
13481            fidl::encoding::EmptyStruct,
13482            fidl_fuchsia_posix::Errno,
13483        >>(
13484            result,
13485            self.tx_id,
13486            0x46f15be0ce0ab82b,
13487            fidl::encoding::DynamicFlags::empty(),
13488        )
13489    }
13490}
13491
13492#[must_use = "FIDL methods require a response to be sent"]
13493#[derive(Debug)]
13494pub struct SocketGetIpReceiveTtlResponder {
13495    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13496    tx_id: u32,
13497}
13498
13499/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13500/// if the responder is dropped without sending a response, so that the client
13501/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13502impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13503    fn drop(&mut self) {
13504        self.control_handle.shutdown();
13505        // Safety: drops once, never accessed again
13506        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13507    }
13508}
13509
13510impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13511    type ControlHandle = SocketControlHandle;
13512
13513    fn control_handle(&self) -> &SocketControlHandle {
13514        &self.control_handle
13515    }
13516
13517    fn drop_without_shutdown(mut self) {
13518        // Safety: drops once, never accessed again due to mem::forget
13519        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13520        // Prevent Drop from running (which would shut down the channel)
13521        std::mem::forget(self);
13522    }
13523}
13524
13525impl SocketGetIpReceiveTtlResponder {
13526    /// Sends a response to the FIDL transaction.
13527    ///
13528    /// Sets the channel to shutdown if an error occurs.
13529    pub fn send(
13530        self,
13531        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13532    ) -> Result<(), fidl::Error> {
13533        let _result = self.send_raw(result);
13534        if _result.is_err() {
13535            self.control_handle.shutdown();
13536        }
13537        self.drop_without_shutdown();
13538        _result
13539    }
13540
13541    /// Similar to "send" but does not shutdown the channel if an error occurs.
13542    pub fn send_no_shutdown_on_err(
13543        self,
13544        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13545    ) -> Result<(), fidl::Error> {
13546        let _result = self.send_raw(result);
13547        self.drop_without_shutdown();
13548        _result
13549    }
13550
13551    fn send_raw(
13552        &self,
13553        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13554    ) -> Result<(), fidl::Error> {
13555        self.control_handle.inner.send::<fidl::encoding::ResultType<
13556            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13557            fidl_fuchsia_posix::Errno,
13558        >>(
13559            result.map(|value| (value,)),
13560            self.tx_id,
13561            0x678ddd5a5dfa2eb5,
13562            fidl::encoding::DynamicFlags::empty(),
13563        )
13564    }
13565}
13566
13567#[must_use = "FIDL methods require a response to be sent"]
13568#[derive(Debug)]
13569pub struct SocketSetIpMulticastInterfaceResponder {
13570    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13571    tx_id: u32,
13572}
13573
13574/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13575/// if the responder is dropped without sending a response, so that the client
13576/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13577impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13578    fn drop(&mut self) {
13579        self.control_handle.shutdown();
13580        // Safety: drops once, never accessed again
13581        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13582    }
13583}
13584
13585impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13586    type ControlHandle = SocketControlHandle;
13587
13588    fn control_handle(&self) -> &SocketControlHandle {
13589        &self.control_handle
13590    }
13591
13592    fn drop_without_shutdown(mut self) {
13593        // Safety: drops once, never accessed again due to mem::forget
13594        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13595        // Prevent Drop from running (which would shut down the channel)
13596        std::mem::forget(self);
13597    }
13598}
13599
13600impl SocketSetIpMulticastInterfaceResponder {
13601    /// Sends a response to the FIDL transaction.
13602    ///
13603    /// Sets the channel to shutdown if an error occurs.
13604    pub fn send(
13605        self,
13606        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13607    ) -> Result<(), fidl::Error> {
13608        let _result = self.send_raw(result);
13609        if _result.is_err() {
13610            self.control_handle.shutdown();
13611        }
13612        self.drop_without_shutdown();
13613        _result
13614    }
13615
13616    /// Similar to "send" but does not shutdown the channel if an error occurs.
13617    pub fn send_no_shutdown_on_err(
13618        self,
13619        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13620    ) -> Result<(), fidl::Error> {
13621        let _result = self.send_raw(result);
13622        self.drop_without_shutdown();
13623        _result
13624    }
13625
13626    fn send_raw(
13627        &self,
13628        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13629    ) -> Result<(), fidl::Error> {
13630        self.control_handle.inner.send::<fidl::encoding::ResultType<
13631            fidl::encoding::EmptyStruct,
13632            fidl_fuchsia_posix::Errno,
13633        >>(
13634            result,
13635            self.tx_id,
13636            0x752fbfa9b12befe,
13637            fidl::encoding::DynamicFlags::empty(),
13638        )
13639    }
13640}
13641
13642#[must_use = "FIDL methods require a response to be sent"]
13643#[derive(Debug)]
13644pub struct SocketGetIpMulticastInterfaceResponder {
13645    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13646    tx_id: u32,
13647}
13648
13649/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13650/// if the responder is dropped without sending a response, so that the client
13651/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13652impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13653    fn drop(&mut self) {
13654        self.control_handle.shutdown();
13655        // Safety: drops once, never accessed again
13656        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13657    }
13658}
13659
13660impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13661    type ControlHandle = SocketControlHandle;
13662
13663    fn control_handle(&self) -> &SocketControlHandle {
13664        &self.control_handle
13665    }
13666
13667    fn drop_without_shutdown(mut self) {
13668        // Safety: drops once, never accessed again due to mem::forget
13669        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13670        // Prevent Drop from running (which would shut down the channel)
13671        std::mem::forget(self);
13672    }
13673}
13674
13675impl SocketGetIpMulticastInterfaceResponder {
13676    /// Sends a response to the FIDL transaction.
13677    ///
13678    /// Sets the channel to shutdown if an error occurs.
13679    pub fn send(
13680        self,
13681        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13682    ) -> Result<(), fidl::Error> {
13683        let _result = self.send_raw(result);
13684        if _result.is_err() {
13685            self.control_handle.shutdown();
13686        }
13687        self.drop_without_shutdown();
13688        _result
13689    }
13690
13691    /// Similar to "send" but does not shutdown the channel if an error occurs.
13692    pub fn send_no_shutdown_on_err(
13693        self,
13694        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13695    ) -> Result<(), fidl::Error> {
13696        let _result = self.send_raw(result);
13697        self.drop_without_shutdown();
13698        _result
13699    }
13700
13701    fn send_raw(
13702        &self,
13703        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13704    ) -> Result<(), fidl::Error> {
13705        self.control_handle.inner.send::<fidl::encoding::ResultType<
13706            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13707            fidl_fuchsia_posix::Errno,
13708        >>(
13709            result.map(|value| (value,)),
13710            self.tx_id,
13711            0x320bd14c4df046c4,
13712            fidl::encoding::DynamicFlags::empty(),
13713        )
13714    }
13715}
13716
13717#[must_use = "FIDL methods require a response to be sent"]
13718#[derive(Debug)]
13719pub struct SocketSetIpMulticastTtlResponder {
13720    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13721    tx_id: u32,
13722}
13723
13724/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13725/// if the responder is dropped without sending a response, so that the client
13726/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13727impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13728    fn drop(&mut self) {
13729        self.control_handle.shutdown();
13730        // Safety: drops once, never accessed again
13731        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13732    }
13733}
13734
13735impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13736    type ControlHandle = SocketControlHandle;
13737
13738    fn control_handle(&self) -> &SocketControlHandle {
13739        &self.control_handle
13740    }
13741
13742    fn drop_without_shutdown(mut self) {
13743        // Safety: drops once, never accessed again due to mem::forget
13744        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13745        // Prevent Drop from running (which would shut down the channel)
13746        std::mem::forget(self);
13747    }
13748}
13749
13750impl SocketSetIpMulticastTtlResponder {
13751    /// Sends a response to the FIDL transaction.
13752    ///
13753    /// Sets the channel to shutdown if an error occurs.
13754    pub fn send(
13755        self,
13756        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13757    ) -> Result<(), fidl::Error> {
13758        let _result = self.send_raw(result);
13759        if _result.is_err() {
13760            self.control_handle.shutdown();
13761        }
13762        self.drop_without_shutdown();
13763        _result
13764    }
13765
13766    /// Similar to "send" but does not shutdown the channel if an error occurs.
13767    pub fn send_no_shutdown_on_err(
13768        self,
13769        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13770    ) -> Result<(), fidl::Error> {
13771        let _result = self.send_raw(result);
13772        self.drop_without_shutdown();
13773        _result
13774    }
13775
13776    fn send_raw(
13777        &self,
13778        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13779    ) -> Result<(), fidl::Error> {
13780        self.control_handle.inner.send::<fidl::encoding::ResultType<
13781            fidl::encoding::EmptyStruct,
13782            fidl_fuchsia_posix::Errno,
13783        >>(
13784            result,
13785            self.tx_id,
13786            0x63134d53772916a1,
13787            fidl::encoding::DynamicFlags::empty(),
13788        )
13789    }
13790}
13791
13792#[must_use = "FIDL methods require a response to be sent"]
13793#[derive(Debug)]
13794pub struct SocketGetIpMulticastTtlResponder {
13795    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13796    tx_id: u32,
13797}
13798
13799/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13800/// if the responder is dropped without sending a response, so that the client
13801/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13802impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13803    fn drop(&mut self) {
13804        self.control_handle.shutdown();
13805        // Safety: drops once, never accessed again
13806        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13807    }
13808}
13809
13810impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13811    type ControlHandle = SocketControlHandle;
13812
13813    fn control_handle(&self) -> &SocketControlHandle {
13814        &self.control_handle
13815    }
13816
13817    fn drop_without_shutdown(mut self) {
13818        // Safety: drops once, never accessed again due to mem::forget
13819        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13820        // Prevent Drop from running (which would shut down the channel)
13821        std::mem::forget(self);
13822    }
13823}
13824
13825impl SocketGetIpMulticastTtlResponder {
13826    /// Sends a response to the FIDL transaction.
13827    ///
13828    /// Sets the channel to shutdown if an error occurs.
13829    pub fn send(
13830        self,
13831        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13832    ) -> Result<(), fidl::Error> {
13833        let _result = self.send_raw(result);
13834        if _result.is_err() {
13835            self.control_handle.shutdown();
13836        }
13837        self.drop_without_shutdown();
13838        _result
13839    }
13840
13841    /// Similar to "send" but does not shutdown the channel if an error occurs.
13842    pub fn send_no_shutdown_on_err(
13843        self,
13844        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13845    ) -> Result<(), fidl::Error> {
13846        let _result = self.send_raw(result);
13847        self.drop_without_shutdown();
13848        _result
13849    }
13850
13851    fn send_raw(
13852        &self,
13853        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13854    ) -> Result<(), fidl::Error> {
13855        self.control_handle.inner.send::<fidl::encoding::ResultType<
13856            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13857            fidl_fuchsia_posix::Errno,
13858        >>(
13859            result.map(|value| (value,)),
13860            self.tx_id,
13861            0x4665cd378f39e1a,
13862            fidl::encoding::DynamicFlags::empty(),
13863        )
13864    }
13865}
13866
13867#[must_use = "FIDL methods require a response to be sent"]
13868#[derive(Debug)]
13869pub struct SocketSetIpMulticastLoopbackResponder {
13870    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13871    tx_id: u32,
13872}
13873
13874/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13875/// if the responder is dropped without sending a response, so that the client
13876/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13877impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13878    fn drop(&mut self) {
13879        self.control_handle.shutdown();
13880        // Safety: drops once, never accessed again
13881        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13882    }
13883}
13884
13885impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13886    type ControlHandle = SocketControlHandle;
13887
13888    fn control_handle(&self) -> &SocketControlHandle {
13889        &self.control_handle
13890    }
13891
13892    fn drop_without_shutdown(mut self) {
13893        // Safety: drops once, never accessed again due to mem::forget
13894        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13895        // Prevent Drop from running (which would shut down the channel)
13896        std::mem::forget(self);
13897    }
13898}
13899
13900impl SocketSetIpMulticastLoopbackResponder {
13901    /// Sends a response to the FIDL transaction.
13902    ///
13903    /// Sets the channel to shutdown if an error occurs.
13904    pub fn send(
13905        self,
13906        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13907    ) -> Result<(), fidl::Error> {
13908        let _result = self.send_raw(result);
13909        if _result.is_err() {
13910            self.control_handle.shutdown();
13911        }
13912        self.drop_without_shutdown();
13913        _result
13914    }
13915
13916    /// Similar to "send" but does not shutdown the channel if an error occurs.
13917    pub fn send_no_shutdown_on_err(
13918        self,
13919        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13920    ) -> Result<(), fidl::Error> {
13921        let _result = self.send_raw(result);
13922        self.drop_without_shutdown();
13923        _result
13924    }
13925
13926    fn send_raw(
13927        &self,
13928        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13929    ) -> Result<(), fidl::Error> {
13930        self.control_handle.inner.send::<fidl::encoding::ResultType<
13931            fidl::encoding::EmptyStruct,
13932            fidl_fuchsia_posix::Errno,
13933        >>(
13934            result,
13935            self.tx_id,
13936            0x20c55c11f00943ea,
13937            fidl::encoding::DynamicFlags::empty(),
13938        )
13939    }
13940}
13941
13942#[must_use = "FIDL methods require a response to be sent"]
13943#[derive(Debug)]
13944pub struct SocketGetIpMulticastLoopbackResponder {
13945    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13946    tx_id: u32,
13947}
13948
13949/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13950/// if the responder is dropped without sending a response, so that the client
13951/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13952impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13953    fn drop(&mut self) {
13954        self.control_handle.shutdown();
13955        // Safety: drops once, never accessed again
13956        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13957    }
13958}
13959
13960impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13961    type ControlHandle = SocketControlHandle;
13962
13963    fn control_handle(&self) -> &SocketControlHandle {
13964        &self.control_handle
13965    }
13966
13967    fn drop_without_shutdown(mut self) {
13968        // Safety: drops once, never accessed again due to mem::forget
13969        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13970        // Prevent Drop from running (which would shut down the channel)
13971        std::mem::forget(self);
13972    }
13973}
13974
13975impl SocketGetIpMulticastLoopbackResponder {
13976    /// Sends a response to the FIDL transaction.
13977    ///
13978    /// Sets the channel to shutdown if an error occurs.
13979    pub fn send(
13980        self,
13981        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13982    ) -> Result<(), fidl::Error> {
13983        let _result = self.send_raw(result);
13984        if _result.is_err() {
13985            self.control_handle.shutdown();
13986        }
13987        self.drop_without_shutdown();
13988        _result
13989    }
13990
13991    /// Similar to "send" but does not shutdown the channel if an error occurs.
13992    pub fn send_no_shutdown_on_err(
13993        self,
13994        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13995    ) -> Result<(), fidl::Error> {
13996        let _result = self.send_raw(result);
13997        self.drop_without_shutdown();
13998        _result
13999    }
14000
14001    fn send_raw(
14002        &self,
14003        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14004    ) -> Result<(), fidl::Error> {
14005        self.control_handle.inner.send::<fidl::encoding::ResultType<
14006            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
14007            fidl_fuchsia_posix::Errno,
14008        >>(
14009            result.map(|value| (value,)),
14010            self.tx_id,
14011            0x3b6b26ff558298f2,
14012            fidl::encoding::DynamicFlags::empty(),
14013        )
14014    }
14015}
14016
14017#[must_use = "FIDL methods require a response to be sent"]
14018#[derive(Debug)]
14019pub struct SocketAddIpMembershipResponder {
14020    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14021    tx_id: u32,
14022}
14023
14024/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14025/// if the responder is dropped without sending a response, so that the client
14026/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14027impl std::ops::Drop for SocketAddIpMembershipResponder {
14028    fn drop(&mut self) {
14029        self.control_handle.shutdown();
14030        // Safety: drops once, never accessed again
14031        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14032    }
14033}
14034
14035impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
14036    type ControlHandle = SocketControlHandle;
14037
14038    fn control_handle(&self) -> &SocketControlHandle {
14039        &self.control_handle
14040    }
14041
14042    fn drop_without_shutdown(mut self) {
14043        // Safety: drops once, never accessed again due to mem::forget
14044        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14045        // Prevent Drop from running (which would shut down the channel)
14046        std::mem::forget(self);
14047    }
14048}
14049
14050impl SocketAddIpMembershipResponder {
14051    /// Sends a response to the FIDL transaction.
14052    ///
14053    /// Sets the channel to shutdown if an error occurs.
14054    pub fn send(
14055        self,
14056        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14057    ) -> Result<(), fidl::Error> {
14058        let _result = self.send_raw(result);
14059        if _result.is_err() {
14060            self.control_handle.shutdown();
14061        }
14062        self.drop_without_shutdown();
14063        _result
14064    }
14065
14066    /// Similar to "send" but does not shutdown the channel if an error occurs.
14067    pub fn send_no_shutdown_on_err(
14068        self,
14069        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14070    ) -> Result<(), fidl::Error> {
14071        let _result = self.send_raw(result);
14072        self.drop_without_shutdown();
14073        _result
14074    }
14075
14076    fn send_raw(
14077        &self,
14078        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14079    ) -> Result<(), fidl::Error> {
14080        self.control_handle.inner.send::<fidl::encoding::ResultType<
14081            fidl::encoding::EmptyStruct,
14082            fidl_fuchsia_posix::Errno,
14083        >>(
14084            result,
14085            self.tx_id,
14086            0x76bc7df115a3b4d0,
14087            fidl::encoding::DynamicFlags::empty(),
14088        )
14089    }
14090}
14091
14092#[must_use = "FIDL methods require a response to be sent"]
14093#[derive(Debug)]
14094pub struct SocketDropIpMembershipResponder {
14095    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14096    tx_id: u32,
14097}
14098
14099/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14100/// if the responder is dropped without sending a response, so that the client
14101/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14102impl std::ops::Drop for SocketDropIpMembershipResponder {
14103    fn drop(&mut self) {
14104        self.control_handle.shutdown();
14105        // Safety: drops once, never accessed again
14106        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14107    }
14108}
14109
14110impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
14111    type ControlHandle = SocketControlHandle;
14112
14113    fn control_handle(&self) -> &SocketControlHandle {
14114        &self.control_handle
14115    }
14116
14117    fn drop_without_shutdown(mut self) {
14118        // Safety: drops once, never accessed again due to mem::forget
14119        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14120        // Prevent Drop from running (which would shut down the channel)
14121        std::mem::forget(self);
14122    }
14123}
14124
14125impl SocketDropIpMembershipResponder {
14126    /// Sends a response to the FIDL transaction.
14127    ///
14128    /// Sets the channel to shutdown if an error occurs.
14129    pub fn send(
14130        self,
14131        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14132    ) -> Result<(), fidl::Error> {
14133        let _result = self.send_raw(result);
14134        if _result.is_err() {
14135            self.control_handle.shutdown();
14136        }
14137        self.drop_without_shutdown();
14138        _result
14139    }
14140
14141    /// Similar to "send" but does not shutdown the channel if an error occurs.
14142    pub fn send_no_shutdown_on_err(
14143        self,
14144        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14145    ) -> Result<(), fidl::Error> {
14146        let _result = self.send_raw(result);
14147        self.drop_without_shutdown();
14148        _result
14149    }
14150
14151    fn send_raw(
14152        &self,
14153        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14154    ) -> Result<(), fidl::Error> {
14155        self.control_handle.inner.send::<fidl::encoding::ResultType<
14156            fidl::encoding::EmptyStruct,
14157            fidl_fuchsia_posix::Errno,
14158        >>(
14159            result,
14160            self.tx_id,
14161            0x2888f3099188d03,
14162            fidl::encoding::DynamicFlags::empty(),
14163        )
14164    }
14165}
14166
14167#[must_use = "FIDL methods require a response to be sent"]
14168#[derive(Debug)]
14169pub struct SocketSetIpTransparentResponder {
14170    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14171    tx_id: u32,
14172}
14173
14174/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14175/// if the responder is dropped without sending a response, so that the client
14176/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14177impl std::ops::Drop for SocketSetIpTransparentResponder {
14178    fn drop(&mut self) {
14179        self.control_handle.shutdown();
14180        // Safety: drops once, never accessed again
14181        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14182    }
14183}
14184
14185impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
14186    type ControlHandle = SocketControlHandle;
14187
14188    fn control_handle(&self) -> &SocketControlHandle {
14189        &self.control_handle
14190    }
14191
14192    fn drop_without_shutdown(mut self) {
14193        // Safety: drops once, never accessed again due to mem::forget
14194        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14195        // Prevent Drop from running (which would shut down the channel)
14196        std::mem::forget(self);
14197    }
14198}
14199
14200impl SocketSetIpTransparentResponder {
14201    /// Sends a response to the FIDL transaction.
14202    ///
14203    /// Sets the channel to shutdown if an error occurs.
14204    pub fn send(
14205        self,
14206        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14207    ) -> Result<(), fidl::Error> {
14208        let _result = self.send_raw(result);
14209        if _result.is_err() {
14210            self.control_handle.shutdown();
14211        }
14212        self.drop_without_shutdown();
14213        _result
14214    }
14215
14216    /// Similar to "send" but does not shutdown the channel if an error occurs.
14217    pub fn send_no_shutdown_on_err(
14218        self,
14219        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14220    ) -> Result<(), fidl::Error> {
14221        let _result = self.send_raw(result);
14222        self.drop_without_shutdown();
14223        _result
14224    }
14225
14226    fn send_raw(
14227        &self,
14228        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14229    ) -> Result<(), fidl::Error> {
14230        self.control_handle.inner.send::<fidl::encoding::ResultType<
14231            fidl::encoding::EmptyStruct,
14232            fidl_fuchsia_posix::Errno,
14233        >>(
14234            result,
14235            self.tx_id,
14236            0x1ae532b0c066e3a0,
14237            fidl::encoding::DynamicFlags::empty(),
14238        )
14239    }
14240}
14241
14242#[must_use = "FIDL methods require a response to be sent"]
14243#[derive(Debug)]
14244pub struct SocketGetIpTransparentResponder {
14245    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14246    tx_id: u32,
14247}
14248
14249/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14250/// if the responder is dropped without sending a response, so that the client
14251/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14252impl std::ops::Drop for SocketGetIpTransparentResponder {
14253    fn drop(&mut self) {
14254        self.control_handle.shutdown();
14255        // Safety: drops once, never accessed again
14256        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14257    }
14258}
14259
14260impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
14261    type ControlHandle = SocketControlHandle;
14262
14263    fn control_handle(&self) -> &SocketControlHandle {
14264        &self.control_handle
14265    }
14266
14267    fn drop_without_shutdown(mut self) {
14268        // Safety: drops once, never accessed again due to mem::forget
14269        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14270        // Prevent Drop from running (which would shut down the channel)
14271        std::mem::forget(self);
14272    }
14273}
14274
14275impl SocketGetIpTransparentResponder {
14276    /// Sends a response to the FIDL transaction.
14277    ///
14278    /// Sets the channel to shutdown if an error occurs.
14279    pub fn send(
14280        self,
14281        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14282    ) -> Result<(), fidl::Error> {
14283        let _result = self.send_raw(result);
14284        if _result.is_err() {
14285            self.control_handle.shutdown();
14286        }
14287        self.drop_without_shutdown();
14288        _result
14289    }
14290
14291    /// Similar to "send" but does not shutdown the channel if an error occurs.
14292    pub fn send_no_shutdown_on_err(
14293        self,
14294        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14295    ) -> Result<(), fidl::Error> {
14296        let _result = self.send_raw(result);
14297        self.drop_without_shutdown();
14298        _result
14299    }
14300
14301    fn send_raw(
14302        &self,
14303        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14304    ) -> Result<(), fidl::Error> {
14305        self.control_handle.inner.send::<fidl::encoding::ResultType<
14306            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
14307            fidl_fuchsia_posix::Errno,
14308        >>(
14309            result.map(|value| (value,)),
14310            self.tx_id,
14311            0x51d43695962ebfb5,
14312            fidl::encoding::DynamicFlags::empty(),
14313        )
14314    }
14315}
14316
14317#[must_use = "FIDL methods require a response to be sent"]
14318#[derive(Debug)]
14319pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14320    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14321    tx_id: u32,
14322}
14323
14324/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14325/// if the responder is dropped without sending a response, so that the client
14326/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14327impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14328    fn drop(&mut self) {
14329        self.control_handle.shutdown();
14330        // Safety: drops once, never accessed again
14331        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14332    }
14333}
14334
14335impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14336    type ControlHandle = SocketControlHandle;
14337
14338    fn control_handle(&self) -> &SocketControlHandle {
14339        &self.control_handle
14340    }
14341
14342    fn drop_without_shutdown(mut self) {
14343        // Safety: drops once, never accessed again due to mem::forget
14344        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14345        // Prevent Drop from running (which would shut down the channel)
14346        std::mem::forget(self);
14347    }
14348}
14349
14350impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14351    /// Sends a response to the FIDL transaction.
14352    ///
14353    /// Sets the channel to shutdown if an error occurs.
14354    pub fn send(
14355        self,
14356        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14357    ) -> Result<(), fidl::Error> {
14358        let _result = self.send_raw(result);
14359        if _result.is_err() {
14360            self.control_handle.shutdown();
14361        }
14362        self.drop_without_shutdown();
14363        _result
14364    }
14365
14366    /// Similar to "send" but does not shutdown the channel if an error occurs.
14367    pub fn send_no_shutdown_on_err(
14368        self,
14369        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14370    ) -> Result<(), fidl::Error> {
14371        let _result = self.send_raw(result);
14372        self.drop_without_shutdown();
14373        _result
14374    }
14375
14376    fn send_raw(
14377        &self,
14378        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14379    ) -> Result<(), fidl::Error> {
14380        self.control_handle.inner.send::<fidl::encoding::ResultType<
14381            fidl::encoding::EmptyStruct,
14382            fidl_fuchsia_posix::Errno,
14383        >>(
14384            result,
14385            self.tx_id,
14386            0x4722b4ce52f7840,
14387            fidl::encoding::DynamicFlags::empty(),
14388        )
14389    }
14390}
14391
14392#[must_use = "FIDL methods require a response to be sent"]
14393#[derive(Debug)]
14394pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14395    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14396    tx_id: u32,
14397}
14398
14399/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14400/// if the responder is dropped without sending a response, so that the client
14401/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14402impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14403    fn drop(&mut self) {
14404        self.control_handle.shutdown();
14405        // Safety: drops once, never accessed again
14406        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14407    }
14408}
14409
14410impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14411    type ControlHandle = SocketControlHandle;
14412
14413    fn control_handle(&self) -> &SocketControlHandle {
14414        &self.control_handle
14415    }
14416
14417    fn drop_without_shutdown(mut self) {
14418        // Safety: drops once, never accessed again due to mem::forget
14419        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14420        // Prevent Drop from running (which would shut down the channel)
14421        std::mem::forget(self);
14422    }
14423}
14424
14425impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14426    /// Sends a response to the FIDL transaction.
14427    ///
14428    /// Sets the channel to shutdown if an error occurs.
14429    pub fn send(
14430        self,
14431        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14432    ) -> Result<(), fidl::Error> {
14433        let _result = self.send_raw(result);
14434        if _result.is_err() {
14435            self.control_handle.shutdown();
14436        }
14437        self.drop_without_shutdown();
14438        _result
14439    }
14440
14441    /// Similar to "send" but does not shutdown the channel if an error occurs.
14442    pub fn send_no_shutdown_on_err(
14443        self,
14444        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14445    ) -> Result<(), fidl::Error> {
14446        let _result = self.send_raw(result);
14447        self.drop_without_shutdown();
14448        _result
14449    }
14450
14451    fn send_raw(
14452        &self,
14453        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14454    ) -> Result<(), fidl::Error> {
14455        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14456            result.map(|value| (value,)),
14457            self.tx_id,
14458            0x2a0e7dc5d6bfdfe9,
14459            fidl::encoding::DynamicFlags::empty()
14460        )
14461    }
14462}
14463
14464#[must_use = "FIDL methods require a response to be sent"]
14465#[derive(Debug)]
14466pub struct SocketAddIpv6MembershipResponder {
14467    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14468    tx_id: u32,
14469}
14470
14471/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14472/// if the responder is dropped without sending a response, so that the client
14473/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14474impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14475    fn drop(&mut self) {
14476        self.control_handle.shutdown();
14477        // Safety: drops once, never accessed again
14478        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14479    }
14480}
14481
14482impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14483    type ControlHandle = SocketControlHandle;
14484
14485    fn control_handle(&self) -> &SocketControlHandle {
14486        &self.control_handle
14487    }
14488
14489    fn drop_without_shutdown(mut self) {
14490        // Safety: drops once, never accessed again due to mem::forget
14491        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14492        // Prevent Drop from running (which would shut down the channel)
14493        std::mem::forget(self);
14494    }
14495}
14496
14497impl SocketAddIpv6MembershipResponder {
14498    /// Sends a response to the FIDL transaction.
14499    ///
14500    /// Sets the channel to shutdown if an error occurs.
14501    pub fn send(
14502        self,
14503        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14504    ) -> Result<(), fidl::Error> {
14505        let _result = self.send_raw(result);
14506        if _result.is_err() {
14507            self.control_handle.shutdown();
14508        }
14509        self.drop_without_shutdown();
14510        _result
14511    }
14512
14513    /// Similar to "send" but does not shutdown the channel if an error occurs.
14514    pub fn send_no_shutdown_on_err(
14515        self,
14516        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14517    ) -> Result<(), fidl::Error> {
14518        let _result = self.send_raw(result);
14519        self.drop_without_shutdown();
14520        _result
14521    }
14522
14523    fn send_raw(
14524        &self,
14525        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14526    ) -> Result<(), fidl::Error> {
14527        self.control_handle.inner.send::<fidl::encoding::ResultType<
14528            fidl::encoding::EmptyStruct,
14529            fidl_fuchsia_posix::Errno,
14530        >>(
14531            result,
14532            self.tx_id,
14533            0x7c94727acb4ea4b3,
14534            fidl::encoding::DynamicFlags::empty(),
14535        )
14536    }
14537}
14538
14539#[must_use = "FIDL methods require a response to be sent"]
14540#[derive(Debug)]
14541pub struct SocketDropIpv6MembershipResponder {
14542    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14543    tx_id: u32,
14544}
14545
14546/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14547/// if the responder is dropped without sending a response, so that the client
14548/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14549impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14550    fn drop(&mut self) {
14551        self.control_handle.shutdown();
14552        // Safety: drops once, never accessed again
14553        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14554    }
14555}
14556
14557impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14558    type ControlHandle = SocketControlHandle;
14559
14560    fn control_handle(&self) -> &SocketControlHandle {
14561        &self.control_handle
14562    }
14563
14564    fn drop_without_shutdown(mut self) {
14565        // Safety: drops once, never accessed again due to mem::forget
14566        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14567        // Prevent Drop from running (which would shut down the channel)
14568        std::mem::forget(self);
14569    }
14570}
14571
14572impl SocketDropIpv6MembershipResponder {
14573    /// Sends a response to the FIDL transaction.
14574    ///
14575    /// Sets the channel to shutdown if an error occurs.
14576    pub fn send(
14577        self,
14578        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14579    ) -> Result<(), fidl::Error> {
14580        let _result = self.send_raw(result);
14581        if _result.is_err() {
14582            self.control_handle.shutdown();
14583        }
14584        self.drop_without_shutdown();
14585        _result
14586    }
14587
14588    /// Similar to "send" but does not shutdown the channel if an error occurs.
14589    pub fn send_no_shutdown_on_err(
14590        self,
14591        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14592    ) -> Result<(), fidl::Error> {
14593        let _result = self.send_raw(result);
14594        self.drop_without_shutdown();
14595        _result
14596    }
14597
14598    fn send_raw(
14599        &self,
14600        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14601    ) -> Result<(), fidl::Error> {
14602        self.control_handle.inner.send::<fidl::encoding::ResultType<
14603            fidl::encoding::EmptyStruct,
14604            fidl_fuchsia_posix::Errno,
14605        >>(
14606            result,
14607            self.tx_id,
14608            0x42104c70ccaba304,
14609            fidl::encoding::DynamicFlags::empty(),
14610        )
14611    }
14612}
14613
14614#[must_use = "FIDL methods require a response to be sent"]
14615#[derive(Debug)]
14616pub struct SocketSetIpv6MulticastInterfaceResponder {
14617    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14618    tx_id: u32,
14619}
14620
14621/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14622/// if the responder is dropped without sending a response, so that the client
14623/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14624impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14625    fn drop(&mut self) {
14626        self.control_handle.shutdown();
14627        // Safety: drops once, never accessed again
14628        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14629    }
14630}
14631
14632impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14633    type ControlHandle = SocketControlHandle;
14634
14635    fn control_handle(&self) -> &SocketControlHandle {
14636        &self.control_handle
14637    }
14638
14639    fn drop_without_shutdown(mut self) {
14640        // Safety: drops once, never accessed again due to mem::forget
14641        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14642        // Prevent Drop from running (which would shut down the channel)
14643        std::mem::forget(self);
14644    }
14645}
14646
14647impl SocketSetIpv6MulticastInterfaceResponder {
14648    /// Sends a response to the FIDL transaction.
14649    ///
14650    /// Sets the channel to shutdown if an error occurs.
14651    pub fn send(
14652        self,
14653        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14654    ) -> Result<(), fidl::Error> {
14655        let _result = self.send_raw(result);
14656        if _result.is_err() {
14657            self.control_handle.shutdown();
14658        }
14659        self.drop_without_shutdown();
14660        _result
14661    }
14662
14663    /// Similar to "send" but does not shutdown the channel if an error occurs.
14664    pub fn send_no_shutdown_on_err(
14665        self,
14666        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14667    ) -> Result<(), fidl::Error> {
14668        let _result = self.send_raw(result);
14669        self.drop_without_shutdown();
14670        _result
14671    }
14672
14673    fn send_raw(
14674        &self,
14675        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14676    ) -> Result<(), fidl::Error> {
14677        self.control_handle.inner.send::<fidl::encoding::ResultType<
14678            fidl::encoding::EmptyStruct,
14679            fidl_fuchsia_posix::Errno,
14680        >>(
14681            result,
14682            self.tx_id,
14683            0x135f76db3774ab3b,
14684            fidl::encoding::DynamicFlags::empty(),
14685        )
14686    }
14687}
14688
14689#[must_use = "FIDL methods require a response to be sent"]
14690#[derive(Debug)]
14691pub struct SocketGetIpv6MulticastInterfaceResponder {
14692    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14693    tx_id: u32,
14694}
14695
14696/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14697/// if the responder is dropped without sending a response, so that the client
14698/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14699impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14700    fn drop(&mut self) {
14701        self.control_handle.shutdown();
14702        // Safety: drops once, never accessed again
14703        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14704    }
14705}
14706
14707impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14708    type ControlHandle = SocketControlHandle;
14709
14710    fn control_handle(&self) -> &SocketControlHandle {
14711        &self.control_handle
14712    }
14713
14714    fn drop_without_shutdown(mut self) {
14715        // Safety: drops once, never accessed again due to mem::forget
14716        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14717        // Prevent Drop from running (which would shut down the channel)
14718        std::mem::forget(self);
14719    }
14720}
14721
14722impl SocketGetIpv6MulticastInterfaceResponder {
14723    /// Sends a response to the FIDL transaction.
14724    ///
14725    /// Sets the channel to shutdown if an error occurs.
14726    pub fn send(
14727        self,
14728        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14729    ) -> Result<(), fidl::Error> {
14730        let _result = self.send_raw(result);
14731        if _result.is_err() {
14732            self.control_handle.shutdown();
14733        }
14734        self.drop_without_shutdown();
14735        _result
14736    }
14737
14738    /// Similar to "send" but does not shutdown the channel if an error occurs.
14739    pub fn send_no_shutdown_on_err(
14740        self,
14741        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14742    ) -> Result<(), fidl::Error> {
14743        let _result = self.send_raw(result);
14744        self.drop_without_shutdown();
14745        _result
14746    }
14747
14748    fn send_raw(
14749        &self,
14750        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14751    ) -> Result<(), fidl::Error> {
14752        self.control_handle.inner.send::<fidl::encoding::ResultType<
14753            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14754            fidl_fuchsia_posix::Errno,
14755        >>(
14756            result.map(|value| (value,)),
14757            self.tx_id,
14758            0x1f26fcdd348f1882,
14759            fidl::encoding::DynamicFlags::empty(),
14760        )
14761    }
14762}
14763
14764#[must_use = "FIDL methods require a response to be sent"]
14765#[derive(Debug)]
14766pub struct SocketSetIpv6UnicastHopsResponder {
14767    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14768    tx_id: u32,
14769}
14770
14771/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14772/// if the responder is dropped without sending a response, so that the client
14773/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14774impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14775    fn drop(&mut self) {
14776        self.control_handle.shutdown();
14777        // Safety: drops once, never accessed again
14778        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14779    }
14780}
14781
14782impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14783    type ControlHandle = SocketControlHandle;
14784
14785    fn control_handle(&self) -> &SocketControlHandle {
14786        &self.control_handle
14787    }
14788
14789    fn drop_without_shutdown(mut self) {
14790        // Safety: drops once, never accessed again due to mem::forget
14791        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14792        // Prevent Drop from running (which would shut down the channel)
14793        std::mem::forget(self);
14794    }
14795}
14796
14797impl SocketSetIpv6UnicastHopsResponder {
14798    /// Sends a response to the FIDL transaction.
14799    ///
14800    /// Sets the channel to shutdown if an error occurs.
14801    pub fn send(
14802        self,
14803        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14804    ) -> Result<(), fidl::Error> {
14805        let _result = self.send_raw(result);
14806        if _result.is_err() {
14807            self.control_handle.shutdown();
14808        }
14809        self.drop_without_shutdown();
14810        _result
14811    }
14812
14813    /// Similar to "send" but does not shutdown the channel if an error occurs.
14814    pub fn send_no_shutdown_on_err(
14815        self,
14816        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14817    ) -> Result<(), fidl::Error> {
14818        let _result = self.send_raw(result);
14819        self.drop_without_shutdown();
14820        _result
14821    }
14822
14823    fn send_raw(
14824        &self,
14825        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14826    ) -> Result<(), fidl::Error> {
14827        self.control_handle.inner.send::<fidl::encoding::ResultType<
14828            fidl::encoding::EmptyStruct,
14829            fidl_fuchsia_posix::Errno,
14830        >>(
14831            result,
14832            self.tx_id,
14833            0x157d51e98f462859,
14834            fidl::encoding::DynamicFlags::empty(),
14835        )
14836    }
14837}
14838
14839#[must_use = "FIDL methods require a response to be sent"]
14840#[derive(Debug)]
14841pub struct SocketGetIpv6UnicastHopsResponder {
14842    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14843    tx_id: u32,
14844}
14845
14846/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14847/// if the responder is dropped without sending a response, so that the client
14848/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14849impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14850    fn drop(&mut self) {
14851        self.control_handle.shutdown();
14852        // Safety: drops once, never accessed again
14853        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14854    }
14855}
14856
14857impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14858    type ControlHandle = SocketControlHandle;
14859
14860    fn control_handle(&self) -> &SocketControlHandle {
14861        &self.control_handle
14862    }
14863
14864    fn drop_without_shutdown(mut self) {
14865        // Safety: drops once, never accessed again due to mem::forget
14866        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14867        // Prevent Drop from running (which would shut down the channel)
14868        std::mem::forget(self);
14869    }
14870}
14871
14872impl SocketGetIpv6UnicastHopsResponder {
14873    /// Sends a response to the FIDL transaction.
14874    ///
14875    /// Sets the channel to shutdown if an error occurs.
14876    pub fn send(
14877        self,
14878        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14879    ) -> Result<(), fidl::Error> {
14880        let _result = self.send_raw(result);
14881        if _result.is_err() {
14882            self.control_handle.shutdown();
14883        }
14884        self.drop_without_shutdown();
14885        _result
14886    }
14887
14888    /// Similar to "send" but does not shutdown the channel if an error occurs.
14889    pub fn send_no_shutdown_on_err(
14890        self,
14891        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14892    ) -> Result<(), fidl::Error> {
14893        let _result = self.send_raw(result);
14894        self.drop_without_shutdown();
14895        _result
14896    }
14897
14898    fn send_raw(
14899        &self,
14900        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14901    ) -> Result<(), fidl::Error> {
14902        self.control_handle.inner.send::<fidl::encoding::ResultType<
14903            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14904            fidl_fuchsia_posix::Errno,
14905        >>(
14906            result.map(|value| (value,)),
14907            self.tx_id,
14908            0x21f4641cad8bd8d2,
14909            fidl::encoding::DynamicFlags::empty(),
14910        )
14911    }
14912}
14913
14914#[must_use = "FIDL methods require a response to be sent"]
14915#[derive(Debug)]
14916pub struct SocketSetIpv6ReceiveHopLimitResponder {
14917    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14918    tx_id: u32,
14919}
14920
14921/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14922/// if the responder is dropped without sending a response, so that the client
14923/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14924impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14925    fn drop(&mut self) {
14926        self.control_handle.shutdown();
14927        // Safety: drops once, never accessed again
14928        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14929    }
14930}
14931
14932impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14933    type ControlHandle = SocketControlHandle;
14934
14935    fn control_handle(&self) -> &SocketControlHandle {
14936        &self.control_handle
14937    }
14938
14939    fn drop_without_shutdown(mut self) {
14940        // Safety: drops once, never accessed again due to mem::forget
14941        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14942        // Prevent Drop from running (which would shut down the channel)
14943        std::mem::forget(self);
14944    }
14945}
14946
14947impl SocketSetIpv6ReceiveHopLimitResponder {
14948    /// Sends a response to the FIDL transaction.
14949    ///
14950    /// Sets the channel to shutdown if an error occurs.
14951    pub fn send(
14952        self,
14953        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14954    ) -> Result<(), fidl::Error> {
14955        let _result = self.send_raw(result);
14956        if _result.is_err() {
14957            self.control_handle.shutdown();
14958        }
14959        self.drop_without_shutdown();
14960        _result
14961    }
14962
14963    /// Similar to "send" but does not shutdown the channel if an error occurs.
14964    pub fn send_no_shutdown_on_err(
14965        self,
14966        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14967    ) -> Result<(), fidl::Error> {
14968        let _result = self.send_raw(result);
14969        self.drop_without_shutdown();
14970        _result
14971    }
14972
14973    fn send_raw(
14974        &self,
14975        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14976    ) -> Result<(), fidl::Error> {
14977        self.control_handle.inner.send::<fidl::encoding::ResultType<
14978            fidl::encoding::EmptyStruct,
14979            fidl_fuchsia_posix::Errno,
14980        >>(
14981            result,
14982            self.tx_id,
14983            0x5c24808ed2e84a1e,
14984            fidl::encoding::DynamicFlags::empty(),
14985        )
14986    }
14987}
14988
14989#[must_use = "FIDL methods require a response to be sent"]
14990#[derive(Debug)]
14991pub struct SocketGetIpv6ReceiveHopLimitResponder {
14992    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14993    tx_id: u32,
14994}
14995
14996/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14997/// if the responder is dropped without sending a response, so that the client
14998/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14999impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
15000    fn drop(&mut self) {
15001        self.control_handle.shutdown();
15002        // Safety: drops once, never accessed again
15003        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15004    }
15005}
15006
15007impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
15008    type ControlHandle = SocketControlHandle;
15009
15010    fn control_handle(&self) -> &SocketControlHandle {
15011        &self.control_handle
15012    }
15013
15014    fn drop_without_shutdown(mut self) {
15015        // Safety: drops once, never accessed again due to mem::forget
15016        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15017        // Prevent Drop from running (which would shut down the channel)
15018        std::mem::forget(self);
15019    }
15020}
15021
15022impl SocketGetIpv6ReceiveHopLimitResponder {
15023    /// Sends a response to the FIDL transaction.
15024    ///
15025    /// Sets the channel to shutdown if an error occurs.
15026    pub fn send(
15027        self,
15028        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15029    ) -> Result<(), fidl::Error> {
15030        let _result = self.send_raw(result);
15031        if _result.is_err() {
15032            self.control_handle.shutdown();
15033        }
15034        self.drop_without_shutdown();
15035        _result
15036    }
15037
15038    /// Similar to "send" but does not shutdown the channel if an error occurs.
15039    pub fn send_no_shutdown_on_err(
15040        self,
15041        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15042    ) -> Result<(), fidl::Error> {
15043        let _result = self.send_raw(result);
15044        self.drop_without_shutdown();
15045        _result
15046    }
15047
15048    fn send_raw(
15049        &self,
15050        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15051    ) -> Result<(), fidl::Error> {
15052        self.control_handle.inner.send::<fidl::encoding::ResultType<
15053            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
15054            fidl_fuchsia_posix::Errno,
15055        >>(
15056            result.map(|value| (value,)),
15057            self.tx_id,
15058            0x341e06689885b4c0,
15059            fidl::encoding::DynamicFlags::empty(),
15060        )
15061    }
15062}
15063
15064#[must_use = "FIDL methods require a response to be sent"]
15065#[derive(Debug)]
15066pub struct SocketSetIpv6MulticastHopsResponder {
15067    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15068    tx_id: u32,
15069}
15070
15071/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15072/// if the responder is dropped without sending a response, so that the client
15073/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15074impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
15075    fn drop(&mut self) {
15076        self.control_handle.shutdown();
15077        // Safety: drops once, never accessed again
15078        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15079    }
15080}
15081
15082impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
15083    type ControlHandle = SocketControlHandle;
15084
15085    fn control_handle(&self) -> &SocketControlHandle {
15086        &self.control_handle
15087    }
15088
15089    fn drop_without_shutdown(mut self) {
15090        // Safety: drops once, never accessed again due to mem::forget
15091        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15092        // Prevent Drop from running (which would shut down the channel)
15093        std::mem::forget(self);
15094    }
15095}
15096
15097impl SocketSetIpv6MulticastHopsResponder {
15098    /// Sends a response to the FIDL transaction.
15099    ///
15100    /// Sets the channel to shutdown if an error occurs.
15101    pub fn send(
15102        self,
15103        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15104    ) -> Result<(), fidl::Error> {
15105        let _result = self.send_raw(result);
15106        if _result.is_err() {
15107            self.control_handle.shutdown();
15108        }
15109        self.drop_without_shutdown();
15110        _result
15111    }
15112
15113    /// Similar to "send" but does not shutdown the channel if an error occurs.
15114    pub fn send_no_shutdown_on_err(
15115        self,
15116        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15117    ) -> Result<(), fidl::Error> {
15118        let _result = self.send_raw(result);
15119        self.drop_without_shutdown();
15120        _result
15121    }
15122
15123    fn send_raw(
15124        &self,
15125        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15126    ) -> Result<(), fidl::Error> {
15127        self.control_handle.inner.send::<fidl::encoding::ResultType<
15128            fidl::encoding::EmptyStruct,
15129            fidl_fuchsia_posix::Errno,
15130        >>(
15131            result,
15132            self.tx_id,
15133            0x25b9cd4d181f82c1,
15134            fidl::encoding::DynamicFlags::empty(),
15135        )
15136    }
15137}
15138
15139#[must_use = "FIDL methods require a response to be sent"]
15140#[derive(Debug)]
15141pub struct SocketGetIpv6MulticastHopsResponder {
15142    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15143    tx_id: u32,
15144}
15145
15146/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15147/// if the responder is dropped without sending a response, so that the client
15148/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15149impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
15150    fn drop(&mut self) {
15151        self.control_handle.shutdown();
15152        // Safety: drops once, never accessed again
15153        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15154    }
15155}
15156
15157impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
15158    type ControlHandle = SocketControlHandle;
15159
15160    fn control_handle(&self) -> &SocketControlHandle {
15161        &self.control_handle
15162    }
15163
15164    fn drop_without_shutdown(mut self) {
15165        // Safety: drops once, never accessed again due to mem::forget
15166        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15167        // Prevent Drop from running (which would shut down the channel)
15168        std::mem::forget(self);
15169    }
15170}
15171
15172impl SocketGetIpv6MulticastHopsResponder {
15173    /// Sends a response to the FIDL transaction.
15174    ///
15175    /// Sets the channel to shutdown if an error occurs.
15176    pub fn send(
15177        self,
15178        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15179    ) -> Result<(), fidl::Error> {
15180        let _result = self.send_raw(result);
15181        if _result.is_err() {
15182            self.control_handle.shutdown();
15183        }
15184        self.drop_without_shutdown();
15185        _result
15186    }
15187
15188    /// Similar to "send" but does not shutdown the channel if an error occurs.
15189    pub fn send_no_shutdown_on_err(
15190        self,
15191        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15192    ) -> Result<(), fidl::Error> {
15193        let _result = self.send_raw(result);
15194        self.drop_without_shutdown();
15195        _result
15196    }
15197
15198    fn send_raw(
15199        &self,
15200        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15201    ) -> Result<(), fidl::Error> {
15202        self.control_handle.inner.send::<fidl::encoding::ResultType<
15203            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
15204            fidl_fuchsia_posix::Errno,
15205        >>(
15206            result.map(|value| (value,)),
15207            self.tx_id,
15208            0x52916948a365012a,
15209            fidl::encoding::DynamicFlags::empty(),
15210        )
15211    }
15212}
15213
15214#[must_use = "FIDL methods require a response to be sent"]
15215#[derive(Debug)]
15216pub struct SocketSetIpv6MulticastLoopbackResponder {
15217    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15218    tx_id: u32,
15219}
15220
15221/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15222/// if the responder is dropped without sending a response, so that the client
15223/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15224impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
15225    fn drop(&mut self) {
15226        self.control_handle.shutdown();
15227        // Safety: drops once, never accessed again
15228        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15229    }
15230}
15231
15232impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
15233    type ControlHandle = SocketControlHandle;
15234
15235    fn control_handle(&self) -> &SocketControlHandle {
15236        &self.control_handle
15237    }
15238
15239    fn drop_without_shutdown(mut self) {
15240        // Safety: drops once, never accessed again due to mem::forget
15241        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15242        // Prevent Drop from running (which would shut down the channel)
15243        std::mem::forget(self);
15244    }
15245}
15246
15247impl SocketSetIpv6MulticastLoopbackResponder {
15248    /// Sends a response to the FIDL transaction.
15249    ///
15250    /// Sets the channel to shutdown if an error occurs.
15251    pub fn send(
15252        self,
15253        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15254    ) -> Result<(), fidl::Error> {
15255        let _result = self.send_raw(result);
15256        if _result.is_err() {
15257            self.control_handle.shutdown();
15258        }
15259        self.drop_without_shutdown();
15260        _result
15261    }
15262
15263    /// Similar to "send" but does not shutdown the channel if an error occurs.
15264    pub fn send_no_shutdown_on_err(
15265        self,
15266        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15267    ) -> Result<(), fidl::Error> {
15268        let _result = self.send_raw(result);
15269        self.drop_without_shutdown();
15270        _result
15271    }
15272
15273    fn send_raw(
15274        &self,
15275        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15276    ) -> Result<(), fidl::Error> {
15277        self.control_handle.inner.send::<fidl::encoding::ResultType<
15278            fidl::encoding::EmptyStruct,
15279            fidl_fuchsia_posix::Errno,
15280        >>(
15281            result,
15282            self.tx_id,
15283            0x55701c409ff41b40,
15284            fidl::encoding::DynamicFlags::empty(),
15285        )
15286    }
15287}
15288
15289#[must_use = "FIDL methods require a response to be sent"]
15290#[derive(Debug)]
15291pub struct SocketGetIpv6MulticastLoopbackResponder {
15292    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15293    tx_id: u32,
15294}
15295
15296/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15297/// if the responder is dropped without sending a response, so that the client
15298/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15299impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
15300    fn drop(&mut self) {
15301        self.control_handle.shutdown();
15302        // Safety: drops once, never accessed again
15303        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15304    }
15305}
15306
15307impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
15308    type ControlHandle = SocketControlHandle;
15309
15310    fn control_handle(&self) -> &SocketControlHandle {
15311        &self.control_handle
15312    }
15313
15314    fn drop_without_shutdown(mut self) {
15315        // Safety: drops once, never accessed again due to mem::forget
15316        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15317        // Prevent Drop from running (which would shut down the channel)
15318        std::mem::forget(self);
15319    }
15320}
15321
15322impl SocketGetIpv6MulticastLoopbackResponder {
15323    /// Sends a response to the FIDL transaction.
15324    ///
15325    /// Sets the channel to shutdown if an error occurs.
15326    pub fn send(
15327        self,
15328        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15329    ) -> Result<(), fidl::Error> {
15330        let _result = self.send_raw(result);
15331        if _result.is_err() {
15332            self.control_handle.shutdown();
15333        }
15334        self.drop_without_shutdown();
15335        _result
15336    }
15337
15338    /// Similar to "send" but does not shutdown the channel if an error occurs.
15339    pub fn send_no_shutdown_on_err(
15340        self,
15341        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15342    ) -> Result<(), fidl::Error> {
15343        let _result = self.send_raw(result);
15344        self.drop_without_shutdown();
15345        _result
15346    }
15347
15348    fn send_raw(
15349        &self,
15350        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15351    ) -> Result<(), fidl::Error> {
15352        self.control_handle.inner.send::<fidl::encoding::ResultType<
15353            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15354            fidl_fuchsia_posix::Errno,
15355        >>(
15356            result.map(|value| (value,)),
15357            self.tx_id,
15358            0x4415b701fde319c3,
15359            fidl::encoding::DynamicFlags::empty(),
15360        )
15361    }
15362}
15363
15364#[must_use = "FIDL methods require a response to be sent"]
15365#[derive(Debug)]
15366pub struct SocketSetIpv6OnlyResponder {
15367    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15368    tx_id: u32,
15369}
15370
15371/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15372/// if the responder is dropped without sending a response, so that the client
15373/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15374impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15375    fn drop(&mut self) {
15376        self.control_handle.shutdown();
15377        // Safety: drops once, never accessed again
15378        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15379    }
15380}
15381
15382impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15383    type ControlHandle = SocketControlHandle;
15384
15385    fn control_handle(&self) -> &SocketControlHandle {
15386        &self.control_handle
15387    }
15388
15389    fn drop_without_shutdown(mut self) {
15390        // Safety: drops once, never accessed again due to mem::forget
15391        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15392        // Prevent Drop from running (which would shut down the channel)
15393        std::mem::forget(self);
15394    }
15395}
15396
15397impl SocketSetIpv6OnlyResponder {
15398    /// Sends a response to the FIDL transaction.
15399    ///
15400    /// Sets the channel to shutdown if an error occurs.
15401    pub fn send(
15402        self,
15403        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15404    ) -> Result<(), fidl::Error> {
15405        let _result = self.send_raw(result);
15406        if _result.is_err() {
15407            self.control_handle.shutdown();
15408        }
15409        self.drop_without_shutdown();
15410        _result
15411    }
15412
15413    /// Similar to "send" but does not shutdown the channel if an error occurs.
15414    pub fn send_no_shutdown_on_err(
15415        self,
15416        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15417    ) -> Result<(), fidl::Error> {
15418        let _result = self.send_raw(result);
15419        self.drop_without_shutdown();
15420        _result
15421    }
15422
15423    fn send_raw(
15424        &self,
15425        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15426    ) -> Result<(), fidl::Error> {
15427        self.control_handle.inner.send::<fidl::encoding::ResultType<
15428            fidl::encoding::EmptyStruct,
15429            fidl_fuchsia_posix::Errno,
15430        >>(
15431            result,
15432            self.tx_id,
15433            0x4873f1364758cbba,
15434            fidl::encoding::DynamicFlags::empty(),
15435        )
15436    }
15437}
15438
15439#[must_use = "FIDL methods require a response to be sent"]
15440#[derive(Debug)]
15441pub struct SocketGetIpv6OnlyResponder {
15442    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15443    tx_id: u32,
15444}
15445
15446/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15447/// if the responder is dropped without sending a response, so that the client
15448/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15449impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15450    fn drop(&mut self) {
15451        self.control_handle.shutdown();
15452        // Safety: drops once, never accessed again
15453        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15454    }
15455}
15456
15457impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15458    type ControlHandle = SocketControlHandle;
15459
15460    fn control_handle(&self) -> &SocketControlHandle {
15461        &self.control_handle
15462    }
15463
15464    fn drop_without_shutdown(mut self) {
15465        // Safety: drops once, never accessed again due to mem::forget
15466        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15467        // Prevent Drop from running (which would shut down the channel)
15468        std::mem::forget(self);
15469    }
15470}
15471
15472impl SocketGetIpv6OnlyResponder {
15473    /// Sends a response to the FIDL transaction.
15474    ///
15475    /// Sets the channel to shutdown if an error occurs.
15476    pub fn send(
15477        self,
15478        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15479    ) -> Result<(), fidl::Error> {
15480        let _result = self.send_raw(result);
15481        if _result.is_err() {
15482            self.control_handle.shutdown();
15483        }
15484        self.drop_without_shutdown();
15485        _result
15486    }
15487
15488    /// Similar to "send" but does not shutdown the channel if an error occurs.
15489    pub fn send_no_shutdown_on_err(
15490        self,
15491        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15492    ) -> Result<(), fidl::Error> {
15493        let _result = self.send_raw(result);
15494        self.drop_without_shutdown();
15495        _result
15496    }
15497
15498    fn send_raw(
15499        &self,
15500        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15501    ) -> Result<(), fidl::Error> {
15502        self.control_handle.inner.send::<fidl::encoding::ResultType<
15503            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15504            fidl_fuchsia_posix::Errno,
15505        >>(
15506            result.map(|value| (value,)),
15507            self.tx_id,
15508            0x4aa3340a1a26b89c,
15509            fidl::encoding::DynamicFlags::empty(),
15510        )
15511    }
15512}
15513
15514#[must_use = "FIDL methods require a response to be sent"]
15515#[derive(Debug)]
15516pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15517    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15518    tx_id: u32,
15519}
15520
15521/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15522/// if the responder is dropped without sending a response, so that the client
15523/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15524impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15525    fn drop(&mut self) {
15526        self.control_handle.shutdown();
15527        // Safety: drops once, never accessed again
15528        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15529    }
15530}
15531
15532impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15533    type ControlHandle = SocketControlHandle;
15534
15535    fn control_handle(&self) -> &SocketControlHandle {
15536        &self.control_handle
15537    }
15538
15539    fn drop_without_shutdown(mut self) {
15540        // Safety: drops once, never accessed again due to mem::forget
15541        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15542        // Prevent Drop from running (which would shut down the channel)
15543        std::mem::forget(self);
15544    }
15545}
15546
15547impl SocketSetIpv6ReceiveTrafficClassResponder {
15548    /// Sends a response to the FIDL transaction.
15549    ///
15550    /// Sets the channel to shutdown if an error occurs.
15551    pub fn send(
15552        self,
15553        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15554    ) -> Result<(), fidl::Error> {
15555        let _result = self.send_raw(result);
15556        if _result.is_err() {
15557            self.control_handle.shutdown();
15558        }
15559        self.drop_without_shutdown();
15560        _result
15561    }
15562
15563    /// Similar to "send" but does not shutdown the channel if an error occurs.
15564    pub fn send_no_shutdown_on_err(
15565        self,
15566        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15567    ) -> Result<(), fidl::Error> {
15568        let _result = self.send_raw(result);
15569        self.drop_without_shutdown();
15570        _result
15571    }
15572
15573    fn send_raw(
15574        &self,
15575        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15576    ) -> Result<(), fidl::Error> {
15577        self.control_handle.inner.send::<fidl::encoding::ResultType<
15578            fidl::encoding::EmptyStruct,
15579            fidl_fuchsia_posix::Errno,
15580        >>(
15581            result,
15582            self.tx_id,
15583            0x58f07c8788d099a0,
15584            fidl::encoding::DynamicFlags::empty(),
15585        )
15586    }
15587}
15588
15589#[must_use = "FIDL methods require a response to be sent"]
15590#[derive(Debug)]
15591pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15592    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15593    tx_id: u32,
15594}
15595
15596/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15597/// if the responder is dropped without sending a response, so that the client
15598/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15599impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15600    fn drop(&mut self) {
15601        self.control_handle.shutdown();
15602        // Safety: drops once, never accessed again
15603        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15604    }
15605}
15606
15607impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15608    type ControlHandle = SocketControlHandle;
15609
15610    fn control_handle(&self) -> &SocketControlHandle {
15611        &self.control_handle
15612    }
15613
15614    fn drop_without_shutdown(mut self) {
15615        // Safety: drops once, never accessed again due to mem::forget
15616        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15617        // Prevent Drop from running (which would shut down the channel)
15618        std::mem::forget(self);
15619    }
15620}
15621
15622impl SocketGetIpv6ReceiveTrafficClassResponder {
15623    /// Sends a response to the FIDL transaction.
15624    ///
15625    /// Sets the channel to shutdown if an error occurs.
15626    pub fn send(
15627        self,
15628        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15629    ) -> Result<(), fidl::Error> {
15630        let _result = self.send_raw(result);
15631        if _result.is_err() {
15632            self.control_handle.shutdown();
15633        }
15634        self.drop_without_shutdown();
15635        _result
15636    }
15637
15638    /// Similar to "send" but does not shutdown the channel if an error occurs.
15639    pub fn send_no_shutdown_on_err(
15640        self,
15641        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15642    ) -> Result<(), fidl::Error> {
15643        let _result = self.send_raw(result);
15644        self.drop_without_shutdown();
15645        _result
15646    }
15647
15648    fn send_raw(
15649        &self,
15650        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15651    ) -> Result<(), fidl::Error> {
15652        self.control_handle.inner.send::<fidl::encoding::ResultType<
15653            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15654            fidl_fuchsia_posix::Errno,
15655        >>(
15656            result.map(|value| (value,)),
15657            self.tx_id,
15658            0x2e334df1da553ffa,
15659            fidl::encoding::DynamicFlags::empty(),
15660        )
15661    }
15662}
15663
15664#[must_use = "FIDL methods require a response to be sent"]
15665#[derive(Debug)]
15666pub struct SocketSetIpv6TrafficClassResponder {
15667    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15668    tx_id: u32,
15669}
15670
15671/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15672/// if the responder is dropped without sending a response, so that the client
15673/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15674impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15675    fn drop(&mut self) {
15676        self.control_handle.shutdown();
15677        // Safety: drops once, never accessed again
15678        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15679    }
15680}
15681
15682impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15683    type ControlHandle = SocketControlHandle;
15684
15685    fn control_handle(&self) -> &SocketControlHandle {
15686        &self.control_handle
15687    }
15688
15689    fn drop_without_shutdown(mut self) {
15690        // Safety: drops once, never accessed again due to mem::forget
15691        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15692        // Prevent Drop from running (which would shut down the channel)
15693        std::mem::forget(self);
15694    }
15695}
15696
15697impl SocketSetIpv6TrafficClassResponder {
15698    /// Sends a response to the FIDL transaction.
15699    ///
15700    /// Sets the channel to shutdown if an error occurs.
15701    pub fn send(
15702        self,
15703        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15704    ) -> Result<(), fidl::Error> {
15705        let _result = self.send_raw(result);
15706        if _result.is_err() {
15707            self.control_handle.shutdown();
15708        }
15709        self.drop_without_shutdown();
15710        _result
15711    }
15712
15713    /// Similar to "send" but does not shutdown the channel if an error occurs.
15714    pub fn send_no_shutdown_on_err(
15715        self,
15716        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15717    ) -> Result<(), fidl::Error> {
15718        let _result = self.send_raw(result);
15719        self.drop_without_shutdown();
15720        _result
15721    }
15722
15723    fn send_raw(
15724        &self,
15725        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15726    ) -> Result<(), fidl::Error> {
15727        self.control_handle.inner.send::<fidl::encoding::ResultType<
15728            fidl::encoding::EmptyStruct,
15729            fidl_fuchsia_posix::Errno,
15730        >>(
15731            result,
15732            self.tx_id,
15733            0x6af077800c5a0b4f,
15734            fidl::encoding::DynamicFlags::empty(),
15735        )
15736    }
15737}
15738
15739#[must_use = "FIDL methods require a response to be sent"]
15740#[derive(Debug)]
15741pub struct SocketGetIpv6TrafficClassResponder {
15742    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15743    tx_id: u32,
15744}
15745
15746/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15747/// if the responder is dropped without sending a response, so that the client
15748/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15749impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15750    fn drop(&mut self) {
15751        self.control_handle.shutdown();
15752        // Safety: drops once, never accessed again
15753        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15754    }
15755}
15756
15757impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15758    type ControlHandle = SocketControlHandle;
15759
15760    fn control_handle(&self) -> &SocketControlHandle {
15761        &self.control_handle
15762    }
15763
15764    fn drop_without_shutdown(mut self) {
15765        // Safety: drops once, never accessed again due to mem::forget
15766        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15767        // Prevent Drop from running (which would shut down the channel)
15768        std::mem::forget(self);
15769    }
15770}
15771
15772impl SocketGetIpv6TrafficClassResponder {
15773    /// Sends a response to the FIDL transaction.
15774    ///
15775    /// Sets the channel to shutdown if an error occurs.
15776    pub fn send(
15777        self,
15778        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15779    ) -> Result<(), fidl::Error> {
15780        let _result = self.send_raw(result);
15781        if _result.is_err() {
15782            self.control_handle.shutdown();
15783        }
15784        self.drop_without_shutdown();
15785        _result
15786    }
15787
15788    /// Similar to "send" but does not shutdown the channel if an error occurs.
15789    pub fn send_no_shutdown_on_err(
15790        self,
15791        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15792    ) -> Result<(), fidl::Error> {
15793        let _result = self.send_raw(result);
15794        self.drop_without_shutdown();
15795        _result
15796    }
15797
15798    fn send_raw(
15799        &self,
15800        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15801    ) -> Result<(), fidl::Error> {
15802        self.control_handle.inner.send::<fidl::encoding::ResultType<
15803            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15804            fidl_fuchsia_posix::Errno,
15805        >>(
15806            result.map(|value| (value,)),
15807            self.tx_id,
15808            0x6baf6eed8fc2f04,
15809            fidl::encoding::DynamicFlags::empty(),
15810        )
15811    }
15812}
15813
15814#[must_use = "FIDL methods require a response to be sent"]
15815#[derive(Debug)]
15816pub struct SocketSetIpv6ReceivePacketInfoResponder {
15817    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15818    tx_id: u32,
15819}
15820
15821/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15822/// if the responder is dropped without sending a response, so that the client
15823/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15824impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15825    fn drop(&mut self) {
15826        self.control_handle.shutdown();
15827        // Safety: drops once, never accessed again
15828        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15829    }
15830}
15831
15832impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15833    type ControlHandle = SocketControlHandle;
15834
15835    fn control_handle(&self) -> &SocketControlHandle {
15836        &self.control_handle
15837    }
15838
15839    fn drop_without_shutdown(mut self) {
15840        // Safety: drops once, never accessed again due to mem::forget
15841        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15842        // Prevent Drop from running (which would shut down the channel)
15843        std::mem::forget(self);
15844    }
15845}
15846
15847impl SocketSetIpv6ReceivePacketInfoResponder {
15848    /// Sends a response to the FIDL transaction.
15849    ///
15850    /// Sets the channel to shutdown if an error occurs.
15851    pub fn send(
15852        self,
15853        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15854    ) -> Result<(), fidl::Error> {
15855        let _result = self.send_raw(result);
15856        if _result.is_err() {
15857            self.control_handle.shutdown();
15858        }
15859        self.drop_without_shutdown();
15860        _result
15861    }
15862
15863    /// Similar to "send" but does not shutdown the channel if an error occurs.
15864    pub fn send_no_shutdown_on_err(
15865        self,
15866        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15867    ) -> Result<(), fidl::Error> {
15868        let _result = self.send_raw(result);
15869        self.drop_without_shutdown();
15870        _result
15871    }
15872
15873    fn send_raw(
15874        &self,
15875        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15876    ) -> Result<(), fidl::Error> {
15877        self.control_handle.inner.send::<fidl::encoding::ResultType<
15878            fidl::encoding::EmptyStruct,
15879            fidl_fuchsia_posix::Errno,
15880        >>(
15881            result,
15882            self.tx_id,
15883            0x19259775b1a92768,
15884            fidl::encoding::DynamicFlags::empty(),
15885        )
15886    }
15887}
15888
15889#[must_use = "FIDL methods require a response to be sent"]
15890#[derive(Debug)]
15891pub struct SocketGetIpv6ReceivePacketInfoResponder {
15892    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15893    tx_id: u32,
15894}
15895
15896/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15897/// if the responder is dropped without sending a response, so that the client
15898/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15899impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15900    fn drop(&mut self) {
15901        self.control_handle.shutdown();
15902        // Safety: drops once, never accessed again
15903        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15904    }
15905}
15906
15907impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15908    type ControlHandle = SocketControlHandle;
15909
15910    fn control_handle(&self) -> &SocketControlHandle {
15911        &self.control_handle
15912    }
15913
15914    fn drop_without_shutdown(mut self) {
15915        // Safety: drops once, never accessed again due to mem::forget
15916        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15917        // Prevent Drop from running (which would shut down the channel)
15918        std::mem::forget(self);
15919    }
15920}
15921
15922impl SocketGetIpv6ReceivePacketInfoResponder {
15923    /// Sends a response to the FIDL transaction.
15924    ///
15925    /// Sets the channel to shutdown if an error occurs.
15926    pub fn send(
15927        self,
15928        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15929    ) -> Result<(), fidl::Error> {
15930        let _result = self.send_raw(result);
15931        if _result.is_err() {
15932            self.control_handle.shutdown();
15933        }
15934        self.drop_without_shutdown();
15935        _result
15936    }
15937
15938    /// Similar to "send" but does not shutdown the channel if an error occurs.
15939    pub fn send_no_shutdown_on_err(
15940        self,
15941        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15942    ) -> Result<(), fidl::Error> {
15943        let _result = self.send_raw(result);
15944        self.drop_without_shutdown();
15945        _result
15946    }
15947
15948    fn send_raw(
15949        &self,
15950        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15951    ) -> Result<(), fidl::Error> {
15952        self.control_handle.inner.send::<fidl::encoding::ResultType<
15953            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15954            fidl_fuchsia_posix::Errno,
15955        >>(
15956            result.map(|value| (value,)),
15957            self.tx_id,
15958            0x7acd4a2775baec75,
15959            fidl::encoding::DynamicFlags::empty(),
15960        )
15961    }
15962}
15963
15964#[must_use = "FIDL methods require a response to be sent"]
15965#[derive(Debug)]
15966pub struct SocketGetOriginalDestinationResponder {
15967    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15968    tx_id: u32,
15969}
15970
15971/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15972/// if the responder is dropped without sending a response, so that the client
15973/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15974impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15975    fn drop(&mut self) {
15976        self.control_handle.shutdown();
15977        // Safety: drops once, never accessed again
15978        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15979    }
15980}
15981
15982impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15983    type ControlHandle = SocketControlHandle;
15984
15985    fn control_handle(&self) -> &SocketControlHandle {
15986        &self.control_handle
15987    }
15988
15989    fn drop_without_shutdown(mut self) {
15990        // Safety: drops once, never accessed again due to mem::forget
15991        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15992        // Prevent Drop from running (which would shut down the channel)
15993        std::mem::forget(self);
15994    }
15995}
15996
15997impl SocketGetOriginalDestinationResponder {
15998    /// Sends a response to the FIDL transaction.
15999    ///
16000    /// Sets the channel to shutdown if an error occurs.
16001    pub fn send(
16002        self,
16003        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
16004    ) -> Result<(), fidl::Error> {
16005        let _result = self.send_raw(result);
16006        if _result.is_err() {
16007            self.control_handle.shutdown();
16008        }
16009        self.drop_without_shutdown();
16010        _result
16011    }
16012
16013    /// Similar to "send" but does not shutdown the channel if an error occurs.
16014    pub fn send_no_shutdown_on_err(
16015        self,
16016        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
16017    ) -> Result<(), fidl::Error> {
16018        let _result = self.send_raw(result);
16019        self.drop_without_shutdown();
16020        _result
16021    }
16022
16023    fn send_raw(
16024        &self,
16025        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
16026    ) -> Result<(), fidl::Error> {
16027        self.control_handle.inner.send::<fidl::encoding::ResultType<
16028            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
16029            fidl_fuchsia_posix::Errno,
16030        >>(
16031            result.map(|value| (value,)),
16032            self.tx_id,
16033            0x38bf28f0dafdbac0,
16034            fidl::encoding::DynamicFlags::empty(),
16035        )
16036    }
16037}
16038
16039#[must_use = "FIDL methods require a response to be sent"]
16040#[derive(Debug)]
16041pub struct SocketDescribeResponder {
16042    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16043    tx_id: u32,
16044}
16045
16046/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16047/// if the responder is dropped without sending a response, so that the client
16048/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16049impl std::ops::Drop for SocketDescribeResponder {
16050    fn drop(&mut self) {
16051        self.control_handle.shutdown();
16052        // Safety: drops once, never accessed again
16053        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16054    }
16055}
16056
16057impl fidl::endpoints::Responder for SocketDescribeResponder {
16058    type ControlHandle = SocketControlHandle;
16059
16060    fn control_handle(&self) -> &SocketControlHandle {
16061        &self.control_handle
16062    }
16063
16064    fn drop_without_shutdown(mut self) {
16065        // Safety: drops once, never accessed again due to mem::forget
16066        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16067        // Prevent Drop from running (which would shut down the channel)
16068        std::mem::forget(self);
16069    }
16070}
16071
16072impl SocketDescribeResponder {
16073    /// Sends a response to the FIDL transaction.
16074    ///
16075    /// Sets the channel to shutdown if an error occurs.
16076    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
16077        let _result = self.send_raw(payload);
16078        if _result.is_err() {
16079            self.control_handle.shutdown();
16080        }
16081        self.drop_without_shutdown();
16082        _result
16083    }
16084
16085    /// Similar to "send" but does not shutdown the channel if an error occurs.
16086    pub fn send_no_shutdown_on_err(
16087        self,
16088        mut payload: SocketDescribeResponse,
16089    ) -> Result<(), fidl::Error> {
16090        let _result = self.send_raw(payload);
16091        self.drop_without_shutdown();
16092        _result
16093    }
16094
16095    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
16096        self.control_handle.inner.send::<SocketDescribeResponse>(
16097            &mut payload,
16098            self.tx_id,
16099            0x335706eccf54a135,
16100            fidl::encoding::DynamicFlags::empty(),
16101        )
16102    }
16103}
16104
16105#[must_use = "FIDL methods require a response to be sent"]
16106#[derive(Debug)]
16107pub struct SocketRecvMsgResponder {
16108    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16109    tx_id: u32,
16110}
16111
16112/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16113/// if the responder is dropped without sending a response, so that the client
16114/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16115impl std::ops::Drop for SocketRecvMsgResponder {
16116    fn drop(&mut self) {
16117        self.control_handle.shutdown();
16118        // Safety: drops once, never accessed again
16119        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16120    }
16121}
16122
16123impl fidl::endpoints::Responder for SocketRecvMsgResponder {
16124    type ControlHandle = SocketControlHandle;
16125
16126    fn control_handle(&self) -> &SocketControlHandle {
16127        &self.control_handle
16128    }
16129
16130    fn drop_without_shutdown(mut self) {
16131        // Safety: drops once, never accessed again due to mem::forget
16132        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16133        // Prevent Drop from running (which would shut down the channel)
16134        std::mem::forget(self);
16135    }
16136}
16137
16138impl SocketRecvMsgResponder {
16139    /// Sends a response to the FIDL transaction.
16140    ///
16141    /// Sets the channel to shutdown if an error occurs.
16142    pub fn send(
16143        self,
16144        mut result: Result<
16145            (
16146                Option<&fidl_fuchsia_net::SocketAddress>,
16147                &[u8],
16148                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16149                u32,
16150            ),
16151            fidl_fuchsia_posix::Errno,
16152        >,
16153    ) -> Result<(), fidl::Error> {
16154        let _result = self.send_raw(result);
16155        if _result.is_err() {
16156            self.control_handle.shutdown();
16157        }
16158        self.drop_without_shutdown();
16159        _result
16160    }
16161
16162    /// Similar to "send" but does not shutdown the channel if an error occurs.
16163    pub fn send_no_shutdown_on_err(
16164        self,
16165        mut result: Result<
16166            (
16167                Option<&fidl_fuchsia_net::SocketAddress>,
16168                &[u8],
16169                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16170                u32,
16171            ),
16172            fidl_fuchsia_posix::Errno,
16173        >,
16174    ) -> Result<(), fidl::Error> {
16175        let _result = self.send_raw(result);
16176        self.drop_without_shutdown();
16177        _result
16178    }
16179
16180    fn send_raw(
16181        &self,
16182        mut result: Result<
16183            (
16184                Option<&fidl_fuchsia_net::SocketAddress>,
16185                &[u8],
16186                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16187                u32,
16188            ),
16189            fidl_fuchsia_posix::Errno,
16190        >,
16191    ) -> Result<(), fidl::Error> {
16192        self.control_handle.inner.send::<fidl::encoding::ResultType<
16193            SocketRecvMsgResponse,
16194            fidl_fuchsia_posix::Errno,
16195        >>(
16196            result,
16197            self.tx_id,
16198            0x1dfb695351d3aa1d,
16199            fidl::encoding::DynamicFlags::empty(),
16200        )
16201    }
16202}
16203
16204#[must_use = "FIDL methods require a response to be sent"]
16205#[derive(Debug)]
16206pub struct SocketSendMsgResponder {
16207    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16208    tx_id: u32,
16209}
16210
16211/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16212/// if the responder is dropped without sending a response, so that the client
16213/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16214impl std::ops::Drop for SocketSendMsgResponder {
16215    fn drop(&mut self) {
16216        self.control_handle.shutdown();
16217        // Safety: drops once, never accessed again
16218        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16219    }
16220}
16221
16222impl fidl::endpoints::Responder for SocketSendMsgResponder {
16223    type ControlHandle = SocketControlHandle;
16224
16225    fn control_handle(&self) -> &SocketControlHandle {
16226        &self.control_handle
16227    }
16228
16229    fn drop_without_shutdown(mut self) {
16230        // Safety: drops once, never accessed again due to mem::forget
16231        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16232        // Prevent Drop from running (which would shut down the channel)
16233        std::mem::forget(self);
16234    }
16235}
16236
16237impl SocketSendMsgResponder {
16238    /// Sends a response to the FIDL transaction.
16239    ///
16240    /// Sets the channel to shutdown if an error occurs.
16241    pub fn send(
16242        self,
16243        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16244    ) -> Result<(), fidl::Error> {
16245        let _result = self.send_raw(result);
16246        if _result.is_err() {
16247            self.control_handle.shutdown();
16248        }
16249        self.drop_without_shutdown();
16250        _result
16251    }
16252
16253    /// Similar to "send" but does not shutdown the channel if an error occurs.
16254    pub fn send_no_shutdown_on_err(
16255        self,
16256        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16257    ) -> Result<(), fidl::Error> {
16258        let _result = self.send_raw(result);
16259        self.drop_without_shutdown();
16260        _result
16261    }
16262
16263    fn send_raw(
16264        &self,
16265        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16266    ) -> Result<(), fidl::Error> {
16267        self.control_handle.inner.send::<fidl::encoding::ResultType<
16268            fidl::encoding::EmptyStruct,
16269            fidl_fuchsia_posix::Errno,
16270        >>(
16271            result,
16272            self.tx_id,
16273            0x2cf1eac9a7fc8958,
16274            fidl::encoding::DynamicFlags::empty(),
16275        )
16276    }
16277}
16278
16279#[must_use = "FIDL methods require a response to be sent"]
16280#[derive(Debug)]
16281pub struct SocketGetInfoResponder {
16282    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16283    tx_id: u32,
16284}
16285
16286/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16287/// if the responder is dropped without sending a response, so that the client
16288/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16289impl std::ops::Drop for SocketGetInfoResponder {
16290    fn drop(&mut self) {
16291        self.control_handle.shutdown();
16292        // Safety: drops once, never accessed again
16293        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16294    }
16295}
16296
16297impl fidl::endpoints::Responder for SocketGetInfoResponder {
16298    type ControlHandle = SocketControlHandle;
16299
16300    fn control_handle(&self) -> &SocketControlHandle {
16301        &self.control_handle
16302    }
16303
16304    fn drop_without_shutdown(mut self) {
16305        // Safety: drops once, never accessed again due to mem::forget
16306        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16307        // Prevent Drop from running (which would shut down the channel)
16308        std::mem::forget(self);
16309    }
16310}
16311
16312impl SocketGetInfoResponder {
16313    /// Sends a response to the FIDL transaction.
16314    ///
16315    /// Sets the channel to shutdown if an error occurs.
16316    pub fn send(
16317        self,
16318        mut result: Result<
16319            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16320            fidl_fuchsia_posix::Errno,
16321        >,
16322    ) -> Result<(), fidl::Error> {
16323        let _result = self.send_raw(result);
16324        if _result.is_err() {
16325            self.control_handle.shutdown();
16326        }
16327        self.drop_without_shutdown();
16328        _result
16329    }
16330
16331    /// Similar to "send" but does not shutdown the channel if an error occurs.
16332    pub fn send_no_shutdown_on_err(
16333        self,
16334        mut result: Result<
16335            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16336            fidl_fuchsia_posix::Errno,
16337        >,
16338    ) -> Result<(), fidl::Error> {
16339        let _result = self.send_raw(result);
16340        self.drop_without_shutdown();
16341        _result
16342    }
16343
16344    fn send_raw(
16345        &self,
16346        mut result: Result<
16347            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16348            fidl_fuchsia_posix::Errno,
16349        >,
16350    ) -> Result<(), fidl::Error> {
16351        self.control_handle.inner.send::<fidl::encoding::ResultType<
16352            SocketGetInfoResponse,
16353            fidl_fuchsia_posix::Errno,
16354        >>(
16355            result,
16356            self.tx_id,
16357            0x39676f75aec339ba,
16358            fidl::encoding::DynamicFlags::empty(),
16359        )
16360    }
16361}
16362
16363#[must_use = "FIDL methods require a response to be sent"]
16364#[derive(Debug)]
16365pub struct SocketSetIpHeaderIncludedResponder {
16366    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16367    tx_id: u32,
16368}
16369
16370/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16371/// if the responder is dropped without sending a response, so that the client
16372/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16373impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16374    fn drop(&mut self) {
16375        self.control_handle.shutdown();
16376        // Safety: drops once, never accessed again
16377        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16378    }
16379}
16380
16381impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16382    type ControlHandle = SocketControlHandle;
16383
16384    fn control_handle(&self) -> &SocketControlHandle {
16385        &self.control_handle
16386    }
16387
16388    fn drop_without_shutdown(mut self) {
16389        // Safety: drops once, never accessed again due to mem::forget
16390        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16391        // Prevent Drop from running (which would shut down the channel)
16392        std::mem::forget(self);
16393    }
16394}
16395
16396impl SocketSetIpHeaderIncludedResponder {
16397    /// Sends a response to the FIDL transaction.
16398    ///
16399    /// Sets the channel to shutdown if an error occurs.
16400    pub fn send(
16401        self,
16402        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16403    ) -> Result<(), fidl::Error> {
16404        let _result = self.send_raw(result);
16405        if _result.is_err() {
16406            self.control_handle.shutdown();
16407        }
16408        self.drop_without_shutdown();
16409        _result
16410    }
16411
16412    /// Similar to "send" but does not shutdown the channel if an error occurs.
16413    pub fn send_no_shutdown_on_err(
16414        self,
16415        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16416    ) -> Result<(), fidl::Error> {
16417        let _result = self.send_raw(result);
16418        self.drop_without_shutdown();
16419        _result
16420    }
16421
16422    fn send_raw(
16423        &self,
16424        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16425    ) -> Result<(), fidl::Error> {
16426        self.control_handle.inner.send::<fidl::encoding::ResultType<
16427            fidl::encoding::EmptyStruct,
16428            fidl_fuchsia_posix::Errno,
16429        >>(
16430            result,
16431            self.tx_id,
16432            0x5d06a606d95e8f3,
16433            fidl::encoding::DynamicFlags::empty(),
16434        )
16435    }
16436}
16437
16438#[must_use = "FIDL methods require a response to be sent"]
16439#[derive(Debug)]
16440pub struct SocketGetIpHeaderIncludedResponder {
16441    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16442    tx_id: u32,
16443}
16444
16445/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16446/// if the responder is dropped without sending a response, so that the client
16447/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16448impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16449    fn drop(&mut self) {
16450        self.control_handle.shutdown();
16451        // Safety: drops once, never accessed again
16452        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16453    }
16454}
16455
16456impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16457    type ControlHandle = SocketControlHandle;
16458
16459    fn control_handle(&self) -> &SocketControlHandle {
16460        &self.control_handle
16461    }
16462
16463    fn drop_without_shutdown(mut self) {
16464        // Safety: drops once, never accessed again due to mem::forget
16465        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16466        // Prevent Drop from running (which would shut down the channel)
16467        std::mem::forget(self);
16468    }
16469}
16470
16471impl SocketGetIpHeaderIncludedResponder {
16472    /// Sends a response to the FIDL transaction.
16473    ///
16474    /// Sets the channel to shutdown if an error occurs.
16475    pub fn send(
16476        self,
16477        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16478    ) -> Result<(), fidl::Error> {
16479        let _result = self.send_raw(result);
16480        if _result.is_err() {
16481            self.control_handle.shutdown();
16482        }
16483        self.drop_without_shutdown();
16484        _result
16485    }
16486
16487    /// Similar to "send" but does not shutdown the channel if an error occurs.
16488    pub fn send_no_shutdown_on_err(
16489        self,
16490        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16491    ) -> Result<(), fidl::Error> {
16492        let _result = self.send_raw(result);
16493        self.drop_without_shutdown();
16494        _result
16495    }
16496
16497    fn send_raw(
16498        &self,
16499        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16500    ) -> Result<(), fidl::Error> {
16501        self.control_handle.inner.send::<fidl::encoding::ResultType<
16502            SocketGetIpHeaderIncludedResponse,
16503            fidl_fuchsia_posix::Errno,
16504        >>(
16505            result.map(|value| (value,)),
16506            self.tx_id,
16507            0x76125ad1f4d175f6,
16508            fidl::encoding::DynamicFlags::empty(),
16509        )
16510    }
16511}
16512
16513#[must_use = "FIDL methods require a response to be sent"]
16514#[derive(Debug)]
16515pub struct SocketSetIcmpv6FilterResponder {
16516    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16517    tx_id: u32,
16518}
16519
16520/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16521/// if the responder is dropped without sending a response, so that the client
16522/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16523impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16524    fn drop(&mut self) {
16525        self.control_handle.shutdown();
16526        // Safety: drops once, never accessed again
16527        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16528    }
16529}
16530
16531impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16532    type ControlHandle = SocketControlHandle;
16533
16534    fn control_handle(&self) -> &SocketControlHandle {
16535        &self.control_handle
16536    }
16537
16538    fn drop_without_shutdown(mut self) {
16539        // Safety: drops once, never accessed again due to mem::forget
16540        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16541        // Prevent Drop from running (which would shut down the channel)
16542        std::mem::forget(self);
16543    }
16544}
16545
16546impl SocketSetIcmpv6FilterResponder {
16547    /// Sends a response to the FIDL transaction.
16548    ///
16549    /// Sets the channel to shutdown if an error occurs.
16550    pub fn send(
16551        self,
16552        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16553    ) -> Result<(), fidl::Error> {
16554        let _result = self.send_raw(result);
16555        if _result.is_err() {
16556            self.control_handle.shutdown();
16557        }
16558        self.drop_without_shutdown();
16559        _result
16560    }
16561
16562    /// Similar to "send" but does not shutdown the channel if an error occurs.
16563    pub fn send_no_shutdown_on_err(
16564        self,
16565        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16566    ) -> Result<(), fidl::Error> {
16567        let _result = self.send_raw(result);
16568        self.drop_without_shutdown();
16569        _result
16570    }
16571
16572    fn send_raw(
16573        &self,
16574        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16575    ) -> Result<(), fidl::Error> {
16576        self.control_handle.inner.send::<fidl::encoding::ResultType<
16577            fidl::encoding::EmptyStruct,
16578            fidl_fuchsia_posix::Errno,
16579        >>(
16580            result,
16581            self.tx_id,
16582            0x4ebea92a43ae68a9,
16583            fidl::encoding::DynamicFlags::empty(),
16584        )
16585    }
16586}
16587
16588#[must_use = "FIDL methods require a response to be sent"]
16589#[derive(Debug)]
16590pub struct SocketGetIcmpv6FilterResponder {
16591    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16592    tx_id: u32,
16593}
16594
16595/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16596/// if the responder is dropped without sending a response, so that the client
16597/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16598impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16599    fn drop(&mut self) {
16600        self.control_handle.shutdown();
16601        // Safety: drops once, never accessed again
16602        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16603    }
16604}
16605
16606impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16607    type ControlHandle = SocketControlHandle;
16608
16609    fn control_handle(&self) -> &SocketControlHandle {
16610        &self.control_handle
16611    }
16612
16613    fn drop_without_shutdown(mut self) {
16614        // Safety: drops once, never accessed again due to mem::forget
16615        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16616        // Prevent Drop from running (which would shut down the channel)
16617        std::mem::forget(self);
16618    }
16619}
16620
16621impl SocketGetIcmpv6FilterResponder {
16622    /// Sends a response to the FIDL transaction.
16623    ///
16624    /// Sets the channel to shutdown if an error occurs.
16625    pub fn send(
16626        self,
16627        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16628    ) -> Result<(), fidl::Error> {
16629        let _result = self.send_raw(result);
16630        if _result.is_err() {
16631            self.control_handle.shutdown();
16632        }
16633        self.drop_without_shutdown();
16634        _result
16635    }
16636
16637    /// Similar to "send" but does not shutdown the channel if an error occurs.
16638    pub fn send_no_shutdown_on_err(
16639        self,
16640        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16641    ) -> Result<(), fidl::Error> {
16642        let _result = self.send_raw(result);
16643        self.drop_without_shutdown();
16644        _result
16645    }
16646
16647    fn send_raw(
16648        &self,
16649        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16650    ) -> Result<(), fidl::Error> {
16651        self.control_handle.inner.send::<fidl::encoding::ResultType<
16652            SocketGetIcmpv6FilterResponse,
16653            fidl_fuchsia_posix::Errno,
16654        >>(
16655            result.map(|filter| (filter,)),
16656            self.tx_id,
16657            0x43bd4f3bc0970ace,
16658            fidl::encoding::DynamicFlags::empty(),
16659        )
16660    }
16661}
16662
16663#[must_use = "FIDL methods require a response to be sent"]
16664#[derive(Debug)]
16665pub struct SocketSetIpv6ChecksumResponder {
16666    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16667    tx_id: u32,
16668}
16669
16670/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16671/// if the responder is dropped without sending a response, so that the client
16672/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16673impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16674    fn drop(&mut self) {
16675        self.control_handle.shutdown();
16676        // Safety: drops once, never accessed again
16677        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16678    }
16679}
16680
16681impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16682    type ControlHandle = SocketControlHandle;
16683
16684    fn control_handle(&self) -> &SocketControlHandle {
16685        &self.control_handle
16686    }
16687
16688    fn drop_without_shutdown(mut self) {
16689        // Safety: drops once, never accessed again due to mem::forget
16690        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16691        // Prevent Drop from running (which would shut down the channel)
16692        std::mem::forget(self);
16693    }
16694}
16695
16696impl SocketSetIpv6ChecksumResponder {
16697    /// Sends a response to the FIDL transaction.
16698    ///
16699    /// Sets the channel to shutdown if an error occurs.
16700    pub fn send(
16701        self,
16702        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16703    ) -> Result<(), fidl::Error> {
16704        let _result = self.send_raw(result);
16705        if _result.is_err() {
16706            self.control_handle.shutdown();
16707        }
16708        self.drop_without_shutdown();
16709        _result
16710    }
16711
16712    /// Similar to "send" but does not shutdown the channel if an error occurs.
16713    pub fn send_no_shutdown_on_err(
16714        self,
16715        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16716    ) -> Result<(), fidl::Error> {
16717        let _result = self.send_raw(result);
16718        self.drop_without_shutdown();
16719        _result
16720    }
16721
16722    fn send_raw(
16723        &self,
16724        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16725    ) -> Result<(), fidl::Error> {
16726        self.control_handle.inner.send::<fidl::encoding::ResultType<
16727            fidl::encoding::EmptyStruct,
16728            fidl_fuchsia_posix::Errno,
16729        >>(
16730            result,
16731            self.tx_id,
16732            0x18b7809577199cb4,
16733            fidl::encoding::DynamicFlags::empty(),
16734        )
16735    }
16736}
16737
16738#[must_use = "FIDL methods require a response to be sent"]
16739#[derive(Debug)]
16740pub struct SocketGetIpv6ChecksumResponder {
16741    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16742    tx_id: u32,
16743}
16744
16745/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16746/// if the responder is dropped without sending a response, so that the client
16747/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16748impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16749    fn drop(&mut self) {
16750        self.control_handle.shutdown();
16751        // Safety: drops once, never accessed again
16752        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16753    }
16754}
16755
16756impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16757    type ControlHandle = SocketControlHandle;
16758
16759    fn control_handle(&self) -> &SocketControlHandle {
16760        &self.control_handle
16761    }
16762
16763    fn drop_without_shutdown(mut self) {
16764        // Safety: drops once, never accessed again due to mem::forget
16765        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16766        // Prevent Drop from running (which would shut down the channel)
16767        std::mem::forget(self);
16768    }
16769}
16770
16771impl SocketGetIpv6ChecksumResponder {
16772    /// Sends a response to the FIDL transaction.
16773    ///
16774    /// Sets the channel to shutdown if an error occurs.
16775    pub fn send(
16776        self,
16777        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16778    ) -> Result<(), fidl::Error> {
16779        let _result = self.send_raw(result);
16780        if _result.is_err() {
16781            self.control_handle.shutdown();
16782        }
16783        self.drop_without_shutdown();
16784        _result
16785    }
16786
16787    /// Similar to "send" but does not shutdown the channel if an error occurs.
16788    pub fn send_no_shutdown_on_err(
16789        self,
16790        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16791    ) -> Result<(), fidl::Error> {
16792        let _result = self.send_raw(result);
16793        self.drop_without_shutdown();
16794        _result
16795    }
16796
16797    fn send_raw(
16798        &self,
16799        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16800    ) -> Result<(), fidl::Error> {
16801        self.control_handle.inner.send::<fidl::encoding::ResultType<
16802            SocketGetIpv6ChecksumResponse,
16803            fidl_fuchsia_posix::Errno,
16804        >>(
16805            result.map(|config| (config,)),
16806            self.tx_id,
16807            0x1847bf5b2d263dd,
16808            fidl::encoding::DynamicFlags::empty(),
16809        )
16810    }
16811}
16812
16813mod internal {
16814    use super::*;
16815
16816    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsRequest {
16817        type Borrowed<'a> = &'a mut Self;
16818        fn take_or_borrow<'a>(
16819            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16820        ) -> Self::Borrowed<'a> {
16821            value
16822        }
16823    }
16824
16825    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16826        type Owned = Self;
16827
16828        #[inline(always)]
16829        fn inline_align(_context: fidl::encoding::Context) -> usize {
16830            8
16831        }
16832
16833        #[inline(always)]
16834        fn inline_size(_context: fidl::encoding::Context) -> usize {
16835            40
16836        }
16837    }
16838
16839    unsafe impl
16840        fidl::encoding::Encode<
16841            ProviderSocketWithOptionsRequest,
16842            fidl::encoding::DefaultFuchsiaResourceDialect,
16843        > for &mut ProviderSocketWithOptionsRequest
16844    {
16845        #[inline]
16846        unsafe fn encode(
16847            self,
16848            encoder: &mut fidl::encoding::Encoder<
16849                '_,
16850                fidl::encoding::DefaultFuchsiaResourceDialect,
16851            >,
16852            offset: usize,
16853            _depth: fidl::encoding::Depth,
16854        ) -> fidl::Result<()> {
16855            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16856            // Delegate to tuple encoding.
16857            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16858                (
16859                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16860                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16861                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.opts),
16862                ),
16863                encoder, offset, _depth
16864            )
16865        }
16866    }
16867    unsafe impl<
16868        T0: fidl::encoding::Encode<
16869                fidl_fuchsia_posix_socket::Domain,
16870                fidl::encoding::DefaultFuchsiaResourceDialect,
16871            >,
16872        T1: fidl::encoding::Encode<ProtocolAssociation, fidl::encoding::DefaultFuchsiaResourceDialect>,
16873        T2: fidl::encoding::Encode<
16874                fidl_fuchsia_posix_socket::SocketCreationOptions,
16875                fidl::encoding::DefaultFuchsiaResourceDialect,
16876            >,
16877    >
16878        fidl::encoding::Encode<
16879            ProviderSocketWithOptionsRequest,
16880            fidl::encoding::DefaultFuchsiaResourceDialect,
16881        > for (T0, T1, T2)
16882    {
16883        #[inline]
16884        unsafe fn encode(
16885            self,
16886            encoder: &mut fidl::encoding::Encoder<
16887                '_,
16888                fidl::encoding::DefaultFuchsiaResourceDialect,
16889            >,
16890            offset: usize,
16891            depth: fidl::encoding::Depth,
16892        ) -> fidl::Result<()> {
16893            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16894            // Zero out padding regions. There's no need to apply masks
16895            // because the unmasked parts will be overwritten by fields.
16896            unsafe {
16897                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16898                (ptr as *mut u64).write_unaligned(0);
16899            }
16900            // Write the fields.
16901            self.0.encode(encoder, offset + 0, depth)?;
16902            self.1.encode(encoder, offset + 8, depth)?;
16903            self.2.encode(encoder, offset + 24, depth)?;
16904            Ok(())
16905        }
16906    }
16907
16908    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16909        for ProviderSocketWithOptionsRequest
16910    {
16911        #[inline(always)]
16912        fn new_empty() -> Self {
16913            Self {
16914                domain: fidl::new_empty!(
16915                    fidl_fuchsia_posix_socket::Domain,
16916                    fidl::encoding::DefaultFuchsiaResourceDialect
16917                ),
16918                proto: fidl::new_empty!(
16919                    ProtocolAssociation,
16920                    fidl::encoding::DefaultFuchsiaResourceDialect
16921                ),
16922                opts: fidl::new_empty!(
16923                    fidl_fuchsia_posix_socket::SocketCreationOptions,
16924                    fidl::encoding::DefaultFuchsiaResourceDialect
16925                ),
16926            }
16927        }
16928
16929        #[inline]
16930        unsafe fn decode(
16931            &mut self,
16932            decoder: &mut fidl::encoding::Decoder<
16933                '_,
16934                fidl::encoding::DefaultFuchsiaResourceDialect,
16935            >,
16936            offset: usize,
16937            _depth: fidl::encoding::Depth,
16938        ) -> fidl::Result<()> {
16939            decoder.debug_check_bounds::<Self>(offset);
16940            // Verify that padding bytes are zero.
16941            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16942            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16943            let mask = 0xffffffffffff0000u64;
16944            let maskedval = padval & mask;
16945            if maskedval != 0 {
16946                return Err(fidl::Error::NonZeroPadding {
16947                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16948                });
16949            }
16950            fidl::decode!(
16951                fidl_fuchsia_posix_socket::Domain,
16952                fidl::encoding::DefaultFuchsiaResourceDialect,
16953                &mut self.domain,
16954                decoder,
16955                offset + 0,
16956                _depth
16957            )?;
16958            fidl::decode!(
16959                ProtocolAssociation,
16960                fidl::encoding::DefaultFuchsiaResourceDialect,
16961                &mut self.proto,
16962                decoder,
16963                offset + 8,
16964                _depth
16965            )?;
16966            fidl::decode!(
16967                fidl_fuchsia_posix_socket::SocketCreationOptions,
16968                fidl::encoding::DefaultFuchsiaResourceDialect,
16969                &mut self.opts,
16970                decoder,
16971                offset + 24,
16972                _depth
16973            )?;
16974            Ok(())
16975        }
16976    }
16977
16978    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16979        type Borrowed<'a> = &'a mut Self;
16980        fn take_or_borrow<'a>(
16981            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16982        ) -> Self::Borrowed<'a> {
16983            value
16984        }
16985    }
16986
16987    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16988        type Owned = Self;
16989
16990        #[inline(always)]
16991        fn inline_align(_context: fidl::encoding::Context) -> usize {
16992            4
16993        }
16994
16995        #[inline(always)]
16996        fn inline_size(_context: fidl::encoding::Context) -> usize {
16997            4
16998        }
16999    }
17000
17001    unsafe impl
17002        fidl::encoding::Encode<
17003            ProviderSocketWithOptionsResponse,
17004            fidl::encoding::DefaultFuchsiaResourceDialect,
17005        > for &mut ProviderSocketWithOptionsResponse
17006    {
17007        #[inline]
17008        unsafe fn encode(
17009            self,
17010            encoder: &mut fidl::encoding::Encoder<
17011                '_,
17012                fidl::encoding::DefaultFuchsiaResourceDialect,
17013            >,
17014            offset: usize,
17015            _depth: fidl::encoding::Depth,
17016        ) -> fidl::Result<()> {
17017            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
17018            // Delegate to tuple encoding.
17019            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17020                (
17021                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17022                ),
17023                encoder, offset, _depth
17024            )
17025        }
17026    }
17027    unsafe impl<
17028        T0: fidl::encoding::Encode<
17029                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17030                fidl::encoding::DefaultFuchsiaResourceDialect,
17031            >,
17032    >
17033        fidl::encoding::Encode<
17034            ProviderSocketWithOptionsResponse,
17035            fidl::encoding::DefaultFuchsiaResourceDialect,
17036        > for (T0,)
17037    {
17038        #[inline]
17039        unsafe fn encode(
17040            self,
17041            encoder: &mut fidl::encoding::Encoder<
17042                '_,
17043                fidl::encoding::DefaultFuchsiaResourceDialect,
17044            >,
17045            offset: usize,
17046            depth: fidl::encoding::Depth,
17047        ) -> fidl::Result<()> {
17048            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
17049            // Zero out padding regions. There's no need to apply masks
17050            // because the unmasked parts will be overwritten by fields.
17051            // Write the fields.
17052            self.0.encode(encoder, offset + 0, depth)?;
17053            Ok(())
17054        }
17055    }
17056
17057    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17058        for ProviderSocketWithOptionsResponse
17059    {
17060        #[inline(always)]
17061        fn new_empty() -> Self {
17062            Self {
17063                s: fidl::new_empty!(
17064                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17065                    fidl::encoding::DefaultFuchsiaResourceDialect
17066                ),
17067            }
17068        }
17069
17070        #[inline]
17071        unsafe fn decode(
17072            &mut self,
17073            decoder: &mut fidl::encoding::Decoder<
17074                '_,
17075                fidl::encoding::DefaultFuchsiaResourceDialect,
17076            >,
17077            offset: usize,
17078            _depth: fidl::encoding::Depth,
17079        ) -> fidl::Result<()> {
17080            decoder.debug_check_bounds::<Self>(offset);
17081            // Verify that padding bytes are zero.
17082            fidl::decode!(
17083                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17084                fidl::encoding::DefaultFuchsiaResourceDialect,
17085                &mut self.s,
17086                decoder,
17087                offset + 0,
17088                _depth
17089            )?;
17090            Ok(())
17091        }
17092    }
17093
17094    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
17095        type Borrowed<'a> = &'a mut Self;
17096        fn take_or_borrow<'a>(
17097            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17098        ) -> Self::Borrowed<'a> {
17099            value
17100        }
17101    }
17102
17103    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
17104        type Owned = Self;
17105
17106        #[inline(always)]
17107        fn inline_align(_context: fidl::encoding::Context) -> usize {
17108            4
17109        }
17110
17111        #[inline(always)]
17112        fn inline_size(_context: fidl::encoding::Context) -> usize {
17113            4
17114        }
17115    }
17116
17117    unsafe impl
17118        fidl::encoding::Encode<
17119            ProviderSocketResponse,
17120            fidl::encoding::DefaultFuchsiaResourceDialect,
17121        > for &mut ProviderSocketResponse
17122    {
17123        #[inline]
17124        unsafe fn encode(
17125            self,
17126            encoder: &mut fidl::encoding::Encoder<
17127                '_,
17128                fidl::encoding::DefaultFuchsiaResourceDialect,
17129            >,
17130            offset: usize,
17131            _depth: fidl::encoding::Depth,
17132        ) -> fidl::Result<()> {
17133            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17134            // Delegate to tuple encoding.
17135            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17136                (
17137                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17138                ),
17139                encoder, offset, _depth
17140            )
17141        }
17142    }
17143    unsafe impl<
17144        T0: fidl::encoding::Encode<
17145                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17146                fidl::encoding::DefaultFuchsiaResourceDialect,
17147            >,
17148    >
17149        fidl::encoding::Encode<
17150            ProviderSocketResponse,
17151            fidl::encoding::DefaultFuchsiaResourceDialect,
17152        > for (T0,)
17153    {
17154        #[inline]
17155        unsafe fn encode(
17156            self,
17157            encoder: &mut fidl::encoding::Encoder<
17158                '_,
17159                fidl::encoding::DefaultFuchsiaResourceDialect,
17160            >,
17161            offset: usize,
17162            depth: fidl::encoding::Depth,
17163        ) -> fidl::Result<()> {
17164            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17165            // Zero out padding regions. There's no need to apply masks
17166            // because the unmasked parts will be overwritten by fields.
17167            // Write the fields.
17168            self.0.encode(encoder, offset + 0, depth)?;
17169            Ok(())
17170        }
17171    }
17172
17173    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17174        for ProviderSocketResponse
17175    {
17176        #[inline(always)]
17177        fn new_empty() -> Self {
17178            Self {
17179                s: fidl::new_empty!(
17180                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17181                    fidl::encoding::DefaultFuchsiaResourceDialect
17182                ),
17183            }
17184        }
17185
17186        #[inline]
17187        unsafe fn decode(
17188            &mut self,
17189            decoder: &mut fidl::encoding::Decoder<
17190                '_,
17191                fidl::encoding::DefaultFuchsiaResourceDialect,
17192            >,
17193            offset: usize,
17194            _depth: fidl::encoding::Depth,
17195        ) -> fidl::Result<()> {
17196            decoder.debug_check_bounds::<Self>(offset);
17197            // Verify that padding bytes are zero.
17198            fidl::decode!(
17199                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17200                fidl::encoding::DefaultFuchsiaResourceDialect,
17201                &mut self.s,
17202                decoder,
17203                offset + 0,
17204                _depth
17205            )?;
17206            Ok(())
17207        }
17208    }
17209
17210    impl SocketDescribeResponse {
17211        #[inline(always)]
17212        fn max_ordinal_present(&self) -> u64 {
17213            if let Some(_) = self.event {
17214                return 1;
17215            }
17216            0
17217        }
17218    }
17219
17220    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
17221        type Borrowed<'a> = &'a mut Self;
17222        fn take_or_borrow<'a>(
17223            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17224        ) -> Self::Borrowed<'a> {
17225            value
17226        }
17227    }
17228
17229    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
17230        type Owned = Self;
17231
17232        #[inline(always)]
17233        fn inline_align(_context: fidl::encoding::Context) -> usize {
17234            8
17235        }
17236
17237        #[inline(always)]
17238        fn inline_size(_context: fidl::encoding::Context) -> usize {
17239            16
17240        }
17241    }
17242
17243    unsafe impl
17244        fidl::encoding::Encode<
17245            SocketDescribeResponse,
17246            fidl::encoding::DefaultFuchsiaResourceDialect,
17247        > for &mut SocketDescribeResponse
17248    {
17249        unsafe fn encode(
17250            self,
17251            encoder: &mut fidl::encoding::Encoder<
17252                '_,
17253                fidl::encoding::DefaultFuchsiaResourceDialect,
17254            >,
17255            offset: usize,
17256            mut depth: fidl::encoding::Depth,
17257        ) -> fidl::Result<()> {
17258            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
17259            // Vector header
17260            let max_ordinal: u64 = self.max_ordinal_present();
17261            encoder.write_num(max_ordinal, offset);
17262            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17263            // Calling encoder.out_of_line_offset(0) is not allowed.
17264            if max_ordinal == 0 {
17265                return Ok(());
17266            }
17267            depth.increment()?;
17268            let envelope_size = 8;
17269            let bytes_len = max_ordinal as usize * envelope_size;
17270            #[allow(unused_variables)]
17271            let offset = encoder.out_of_line_offset(bytes_len);
17272            let mut _prev_end_offset: usize = 0;
17273            if 1 > max_ordinal {
17274                return Ok(());
17275            }
17276
17277            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17278            // are envelope_size bytes.
17279            let cur_offset: usize = (1 - 1) * envelope_size;
17280
17281            // Zero reserved fields.
17282            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17283
17284            // Safety:
17285            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17286            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17287            //   envelope_size bytes, there is always sufficient room.
17288            fidl::encoding::encode_in_envelope_optional::<
17289                fidl::encoding::HandleType<
17290                    fidl::EventPair,
17291                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17292                    2147483648,
17293                >,
17294                fidl::encoding::DefaultFuchsiaResourceDialect,
17295            >(
17296                self.event.as_mut().map(
17297                    <fidl::encoding::HandleType<
17298                        fidl::EventPair,
17299                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17300                        2147483648,
17301                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
17302                ),
17303                encoder,
17304                offset + cur_offset,
17305                depth,
17306            )?;
17307
17308            _prev_end_offset = cur_offset + envelope_size;
17309
17310            Ok(())
17311        }
17312    }
17313
17314    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17315        for SocketDescribeResponse
17316    {
17317        #[inline(always)]
17318        fn new_empty() -> Self {
17319            Self::default()
17320        }
17321
17322        unsafe fn decode(
17323            &mut self,
17324            decoder: &mut fidl::encoding::Decoder<
17325                '_,
17326                fidl::encoding::DefaultFuchsiaResourceDialect,
17327            >,
17328            offset: usize,
17329            mut depth: fidl::encoding::Depth,
17330        ) -> fidl::Result<()> {
17331            decoder.debug_check_bounds::<Self>(offset);
17332            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17333                None => return Err(fidl::Error::NotNullable),
17334                Some(len) => len,
17335            };
17336            // Calling decoder.out_of_line_offset(0) is not allowed.
17337            if len == 0 {
17338                return Ok(());
17339            };
17340            depth.increment()?;
17341            let envelope_size = 8;
17342            let bytes_len = len * envelope_size;
17343            let offset = decoder.out_of_line_offset(bytes_len)?;
17344            // Decode the envelope for each type.
17345            let mut _next_ordinal_to_read = 0;
17346            let mut next_offset = offset;
17347            let end_offset = offset + bytes_len;
17348            _next_ordinal_to_read += 1;
17349            if next_offset >= end_offset {
17350                return Ok(());
17351            }
17352
17353            // Decode unknown envelopes for gaps in ordinals.
17354            while _next_ordinal_to_read < 1 {
17355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17356                _next_ordinal_to_read += 1;
17357                next_offset += envelope_size;
17358            }
17359
17360            let next_out_of_line = decoder.next_out_of_line();
17361            let handles_before = decoder.remaining_handles();
17362            if let Some((inlined, num_bytes, num_handles)) =
17363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17364            {
17365                let member_inline_size = <fidl::encoding::HandleType<
17366                    fidl::EventPair,
17367                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17368                    2147483648,
17369                > as fidl::encoding::TypeMarker>::inline_size(
17370                    decoder.context
17371                );
17372                if inlined != (member_inline_size <= 4) {
17373                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17374                }
17375                let inner_offset;
17376                let mut inner_depth = depth.clone();
17377                if inlined {
17378                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17379                    inner_offset = next_offset;
17380                } else {
17381                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17382                    inner_depth.increment()?;
17383                }
17384                let val_ref =
17385                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
17386                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
17387                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17388                {
17389                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17390                }
17391                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17392                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17393                }
17394            }
17395
17396            next_offset += envelope_size;
17397
17398            // Decode the remaining unknown envelopes.
17399            while next_offset < end_offset {
17400                _next_ordinal_to_read += 1;
17401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17402                next_offset += envelope_size;
17403            }
17404
17405            Ok(())
17406        }
17407    }
17408}