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 fidl::endpoints::ControlHandle for ProviderControlHandle {
557    fn shutdown(&self) {
558        self.inner.shutdown()
559    }
560
561    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
562        self.inner.shutdown_with_epitaph(status)
563    }
564
565    fn is_closed(&self) -> bool {
566        self.inner.channel().is_closed()
567    }
568    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
569        self.inner.channel().on_closed()
570    }
571
572    #[cfg(target_os = "fuchsia")]
573    fn signal_peer(
574        &self,
575        clear_mask: zx::Signals,
576        set_mask: zx::Signals,
577    ) -> Result<(), zx_status::Status> {
578        use fidl::Peered;
579        self.inner.channel().signal_peer(clear_mask, set_mask)
580    }
581}
582
583impl ProviderControlHandle {}
584
585#[must_use = "FIDL methods require a response to be sent"]
586#[derive(Debug)]
587pub struct ProviderSocketResponder {
588    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
589    tx_id: u32,
590}
591
592/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
593/// if the responder is dropped without sending a response, so that the client
594/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
595impl std::ops::Drop for ProviderSocketResponder {
596    fn drop(&mut self) {
597        self.control_handle.shutdown();
598        // Safety: drops once, never accessed again
599        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
600    }
601}
602
603impl fidl::endpoints::Responder for ProviderSocketResponder {
604    type ControlHandle = ProviderControlHandle;
605
606    fn control_handle(&self) -> &ProviderControlHandle {
607        &self.control_handle
608    }
609
610    fn drop_without_shutdown(mut self) {
611        // Safety: drops once, never accessed again due to mem::forget
612        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
613        // Prevent Drop from running (which would shut down the channel)
614        std::mem::forget(self);
615    }
616}
617
618impl ProviderSocketResponder {
619    /// Sends a response to the FIDL transaction.
620    ///
621    /// Sets the channel to shutdown if an error occurs.
622    pub fn send(
623        self,
624        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
625    ) -> Result<(), fidl::Error> {
626        let _result = self.send_raw(result);
627        if _result.is_err() {
628            self.control_handle.shutdown();
629        }
630        self.drop_without_shutdown();
631        _result
632    }
633
634    /// Similar to "send" but does not shutdown the channel if an error occurs.
635    pub fn send_no_shutdown_on_err(
636        self,
637        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
638    ) -> Result<(), fidl::Error> {
639        let _result = self.send_raw(result);
640        self.drop_without_shutdown();
641        _result
642    }
643
644    fn send_raw(
645        &self,
646        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
647    ) -> Result<(), fidl::Error> {
648        self.control_handle.inner.send::<fidl::encoding::ResultType<
649            ProviderSocketResponse,
650            fidl_fuchsia_posix::Errno,
651        >>(
652            result.map(|s| (s,)),
653            self.tx_id,
654            0xdfa6a591ab48fd1,
655            fidl::encoding::DynamicFlags::empty(),
656        )
657    }
658}
659
660#[must_use = "FIDL methods require a response to be sent"]
661#[derive(Debug)]
662pub struct ProviderSocketWithOptionsResponder {
663    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
664    tx_id: u32,
665}
666
667/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
668/// if the responder is dropped without sending a response, so that the client
669/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
670impl std::ops::Drop for ProviderSocketWithOptionsResponder {
671    fn drop(&mut self) {
672        self.control_handle.shutdown();
673        // Safety: drops once, never accessed again
674        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
675    }
676}
677
678impl fidl::endpoints::Responder for ProviderSocketWithOptionsResponder {
679    type ControlHandle = ProviderControlHandle;
680
681    fn control_handle(&self) -> &ProviderControlHandle {
682        &self.control_handle
683    }
684
685    fn drop_without_shutdown(mut self) {
686        // Safety: drops once, never accessed again due to mem::forget
687        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
688        // Prevent Drop from running (which would shut down the channel)
689        std::mem::forget(self);
690    }
691}
692
693impl ProviderSocketWithOptionsResponder {
694    /// Sends a response to the FIDL transaction.
695    ///
696    /// Sets the channel to shutdown if an error occurs.
697    pub fn send(
698        self,
699        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
700    ) -> Result<(), fidl::Error> {
701        let _result = self.send_raw(result);
702        if _result.is_err() {
703            self.control_handle.shutdown();
704        }
705        self.drop_without_shutdown();
706        _result
707    }
708
709    /// Similar to "send" but does not shutdown the channel if an error occurs.
710    pub fn send_no_shutdown_on_err(
711        self,
712        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
713    ) -> Result<(), fidl::Error> {
714        let _result = self.send_raw(result);
715        self.drop_without_shutdown();
716        _result
717    }
718
719    fn send_raw(
720        &self,
721        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
722    ) -> Result<(), fidl::Error> {
723        self.control_handle.inner.send::<fidl::encoding::ResultType<
724            ProviderSocketWithOptionsResponse,
725            fidl_fuchsia_posix::Errno,
726        >>(
727            result.map(|s| (s,)),
728            self.tx_id,
729            0x34cd6e7e82c46f85,
730            fidl::encoding::DynamicFlags::empty(),
731        )
732    }
733}
734
735#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
736pub struct SocketMarker;
737
738impl fidl::endpoints::ProtocolMarker for SocketMarker {
739    type Proxy = SocketProxy;
740    type RequestStream = SocketRequestStream;
741    #[cfg(target_os = "fuchsia")]
742    type SynchronousProxy = SocketSynchronousProxy;
743
744    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Socket";
745}
746impl fidl::endpoints::DiscoverableProtocolMarker for SocketMarker {}
747pub type SocketRecvMsgResult = Result<
748    (
749        Option<Box<fidl_fuchsia_net::SocketAddress>>,
750        Vec<u8>,
751        fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
752        u32,
753    ),
754    fidl_fuchsia_posix::Errno,
755>;
756pub type SocketSendMsgResult = Result<(), fidl_fuchsia_posix::Errno>;
757pub type SocketGetInfoResult =
758    Result<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation), fidl_fuchsia_posix::Errno>;
759pub type SocketSetIpHeaderIncludedResult = Result<(), fidl_fuchsia_posix::Errno>;
760pub type SocketGetIpHeaderIncludedResult = Result<bool, fidl_fuchsia_posix::Errno>;
761pub type SocketSetIcmpv6FilterResult = Result<(), fidl_fuchsia_posix::Errno>;
762pub type SocketGetIcmpv6FilterResult = Result<Icmpv6Filter, fidl_fuchsia_posix::Errno>;
763pub type SocketSetIpv6ChecksumResult = Result<(), fidl_fuchsia_posix::Errno>;
764pub type SocketGetIpv6ChecksumResult = Result<Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>;
765
766pub trait SocketProxyInterface: Send + Sync {
767    fn r#clone(
768        &self,
769        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
770    ) -> Result<(), fidl::Error>;
771    type CloseResponseFut: std::future::Future<
772            Output = Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error>,
773        > + Send;
774    fn r#close(&self) -> Self::CloseResponseFut;
775    type QueryResponseFut: std::future::Future<Output = Result<Vec<u8>, fidl::Error>> + Send;
776    fn r#query(&self) -> Self::QueryResponseFut;
777    type SetReuseAddressResponseFut: std::future::Future<
778            Output = Result<
779                fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
780                fidl::Error,
781            >,
782        > + Send;
783    fn r#set_reuse_address(&self, value: bool) -> Self::SetReuseAddressResponseFut;
784    type GetReuseAddressResponseFut: std::future::Future<
785            Output = Result<
786                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
787                fidl::Error,
788            >,
789        > + Send;
790    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut;
791    type GetErrorResponseFut: std::future::Future<
792            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error>,
793        > + Send;
794    fn r#get_error(&self) -> Self::GetErrorResponseFut;
795    type SetBroadcastResponseFut: std::future::Future<
796            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error>,
797        > + Send;
798    fn r#set_broadcast(&self, value: bool) -> Self::SetBroadcastResponseFut;
799    type GetBroadcastResponseFut: std::future::Future<
800            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error>,
801        > + Send;
802    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut;
803    type SetSendBufferResponseFut: std::future::Future<
804            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error>,
805        > + Send;
806    fn r#set_send_buffer(&self, value_bytes: u64) -> Self::SetSendBufferResponseFut;
807    type GetSendBufferResponseFut: std::future::Future<
808            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error>,
809        > + Send;
810    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut;
811    type SetReceiveBufferResponseFut: std::future::Future<
812            Output = Result<
813                fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
814                fidl::Error,
815            >,
816        > + Send;
817    fn r#set_receive_buffer(&self, value_bytes: u64) -> Self::SetReceiveBufferResponseFut;
818    type GetReceiveBufferResponseFut: std::future::Future<
819            Output = Result<
820                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
821                fidl::Error,
822            >,
823        > + Send;
824    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut;
825    type SetKeepAliveResponseFut: std::future::Future<
826            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error>,
827        > + Send;
828    fn r#set_keep_alive(&self, value: bool) -> Self::SetKeepAliveResponseFut;
829    type GetKeepAliveResponseFut: std::future::Future<
830            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error>,
831        > + Send;
832    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut;
833    type SetOutOfBandInlineResponseFut: std::future::Future<
834            Output = Result<
835                fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
836                fidl::Error,
837            >,
838        > + Send;
839    fn r#set_out_of_band_inline(&self, value: bool) -> Self::SetOutOfBandInlineResponseFut;
840    type GetOutOfBandInlineResponseFut: std::future::Future<
841            Output = Result<
842                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
843                fidl::Error,
844            >,
845        > + Send;
846    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut;
847    type SetNoCheckResponseFut: std::future::Future<
848            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error>,
849        > + Send;
850    fn r#set_no_check(&self, value: bool) -> Self::SetNoCheckResponseFut;
851    type GetNoCheckResponseFut: std::future::Future<
852            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error>,
853        > + Send;
854    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut;
855    type SetLingerResponseFut: std::future::Future<
856            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error>,
857        > + Send;
858    fn r#set_linger(&self, linger: bool, length_secs: u32) -> Self::SetLingerResponseFut;
859    type GetLingerResponseFut: std::future::Future<
860            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error>,
861        > + Send;
862    fn r#get_linger(&self) -> Self::GetLingerResponseFut;
863    type SetReusePortResponseFut: std::future::Future<
864            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error>,
865        > + Send;
866    fn r#set_reuse_port(
867        &self,
868        value: fidl_fuchsia_posix_socket::ReusePortOption,
869    ) -> Self::SetReusePortResponseFut;
870    type SetReusePortDeprecatedResponseFut: std::future::Future<
871            Output = Result<
872                fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
873                fidl::Error,
874            >,
875        > + Send;
876    fn r#set_reuse_port_deprecated(&self, value: bool) -> Self::SetReusePortDeprecatedResponseFut;
877    type GetReusePortResponseFut: std::future::Future<
878            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
879        > + Send;
880    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
881    type GetAcceptConnResponseFut: std::future::Future<
882            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
883        > + Send;
884    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
885    type SetBindToDeviceResponseFut: std::future::Future<
886            Output = Result<
887                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
888                fidl::Error,
889            >,
890        > + Send;
891    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
892    type GetBindToDeviceResponseFut: std::future::Future<
893            Output = Result<
894                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
895                fidl::Error,
896            >,
897        > + Send;
898    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
899    type SetBindToInterfaceIndexResponseFut: std::future::Future<
900            Output = Result<
901                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
902                fidl::Error,
903            >,
904        > + Send;
905    fn r#set_bind_to_interface_index(&self, value: u64)
906    -> Self::SetBindToInterfaceIndexResponseFut;
907    type GetBindToInterfaceIndexResponseFut: std::future::Future<
908            Output = Result<
909                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
910                fidl::Error,
911            >,
912        > + Send;
913    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
914    type SetTimestampResponseFut: std::future::Future<
915            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
916        > + Send;
917    fn r#set_timestamp(
918        &self,
919        value: fidl_fuchsia_posix_socket::TimestampOption,
920    ) -> Self::SetTimestampResponseFut;
921    type GetTimestampResponseFut: std::future::Future<
922            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
923        > + Send;
924    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
925    type SetMarkResponseFut: std::future::Future<
926            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
927        > + Send;
928    fn r#set_mark(
929        &self,
930        domain: fidl_fuchsia_net::MarkDomain,
931        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
932    ) -> Self::SetMarkResponseFut;
933    type GetMarkResponseFut: std::future::Future<
934            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
935        > + Send;
936    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
937    type GetCookieResponseFut: std::future::Future<
938            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error>,
939        > + Send;
940    fn r#get_cookie(&self) -> Self::GetCookieResponseFut;
941    type BindResponseFut: std::future::Future<
942            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
943        > + Send;
944    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
945    type ConnectResponseFut: std::future::Future<
946            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
947        > + Send;
948    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
949    type DisconnectResponseFut: std::future::Future<
950            Output = Result<
951                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
952                fidl::Error,
953            >,
954        > + Send;
955    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
956    type GetSockNameResponseFut: std::future::Future<
957            Output = Result<
958                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
959                fidl::Error,
960            >,
961        > + Send;
962    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
963    type GetPeerNameResponseFut: std::future::Future<
964            Output = Result<
965                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
966                fidl::Error,
967            >,
968        > + Send;
969    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
970    type ShutdownResponseFut: std::future::Future<
971            Output = Result<
972                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
973                fidl::Error,
974            >,
975        > + Send;
976    fn r#shutdown(
977        &self,
978        mode: fidl_fuchsia_posix_socket::ShutdownMode,
979    ) -> Self::ShutdownResponseFut;
980    type SetIpTypeOfServiceResponseFut: std::future::Future<
981            Output = Result<
982                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
983                fidl::Error,
984            >,
985        > + Send;
986    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
987    type GetIpTypeOfServiceResponseFut: std::future::Future<
988            Output = Result<
989                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
990                fidl::Error,
991            >,
992        > + Send;
993    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
994    type SetIpTtlResponseFut: std::future::Future<
995            Output = Result<
996                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
997                fidl::Error,
998            >,
999        > + Send;
1000    fn r#set_ip_ttl(
1001        &self,
1002        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1003    ) -> Self::SetIpTtlResponseFut;
1004    type GetIpTtlResponseFut: std::future::Future<
1005            Output = Result<
1006                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
1007                fidl::Error,
1008            >,
1009        > + Send;
1010    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1011    type SetIpPacketInfoResponseFut: std::future::Future<
1012            Output = Result<
1013                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1014                fidl::Error,
1015            >,
1016        > + Send;
1017    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1018    type GetIpPacketInfoResponseFut: std::future::Future<
1019            Output = Result<
1020                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1021                fidl::Error,
1022            >,
1023        > + Send;
1024    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1025    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1026            Output = Result<
1027                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1028                fidl::Error,
1029            >,
1030        > + Send;
1031    fn r#set_ip_receive_type_of_service(
1032        &self,
1033        value: bool,
1034    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1035    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1036            Output = Result<
1037                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1038                fidl::Error,
1039            >,
1040        > + Send;
1041    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1042    type SetIpReceiveTtlResponseFut: std::future::Future<
1043            Output = Result<
1044                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1045                fidl::Error,
1046            >,
1047        > + Send;
1048    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1049    type GetIpReceiveTtlResponseFut: std::future::Future<
1050            Output = Result<
1051                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1052                fidl::Error,
1053            >,
1054        > + Send;
1055    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1056    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1057            Output = Result<
1058                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1059                fidl::Error,
1060            >,
1061        > + Send;
1062    fn r#set_ip_multicast_interface(
1063        &self,
1064        iface: u64,
1065        address: &fidl_fuchsia_net::Ipv4Address,
1066    ) -> Self::SetIpMulticastInterfaceResponseFut;
1067    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1068            Output = Result<
1069                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1070                fidl::Error,
1071            >,
1072        > + Send;
1073    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1074    type SetIpMulticastTtlResponseFut: std::future::Future<
1075            Output = Result<
1076                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1077                fidl::Error,
1078            >,
1079        > + Send;
1080    fn r#set_ip_multicast_ttl(
1081        &self,
1082        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1083    ) -> Self::SetIpMulticastTtlResponseFut;
1084    type GetIpMulticastTtlResponseFut: std::future::Future<
1085            Output = Result<
1086                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1087                fidl::Error,
1088            >,
1089        > + Send;
1090    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1091    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1092            Output = Result<
1093                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1094                fidl::Error,
1095            >,
1096        > + Send;
1097    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1098    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1099            Output = Result<
1100                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1101                fidl::Error,
1102            >,
1103        > + Send;
1104    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1105    type AddIpMembershipResponseFut: std::future::Future<
1106            Output = Result<
1107                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1108                fidl::Error,
1109            >,
1110        > + Send;
1111    fn r#add_ip_membership(
1112        &self,
1113        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1114    ) -> Self::AddIpMembershipResponseFut;
1115    type DropIpMembershipResponseFut: std::future::Future<
1116            Output = Result<
1117                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1118                fidl::Error,
1119            >,
1120        > + Send;
1121    fn r#drop_ip_membership(
1122        &self,
1123        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1124    ) -> Self::DropIpMembershipResponseFut;
1125    type SetIpTransparentResponseFut: std::future::Future<
1126            Output = Result<
1127                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1128                fidl::Error,
1129            >,
1130        > + Send;
1131    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1132    type GetIpTransparentResponseFut: std::future::Future<
1133            Output = Result<
1134                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1135                fidl::Error,
1136            >,
1137        > + Send;
1138    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1139    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1140    fn r#set_ip_receive_original_destination_address(
1141        &self,
1142        value: bool,
1143    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1144    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1145    fn r#get_ip_receive_original_destination_address(
1146        &self,
1147    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1148    type AddIpv6MembershipResponseFut: std::future::Future<
1149            Output = Result<
1150                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1151                fidl::Error,
1152            >,
1153        > + Send;
1154    fn r#add_ipv6_membership(
1155        &self,
1156        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1157    ) -> Self::AddIpv6MembershipResponseFut;
1158    type DropIpv6MembershipResponseFut: std::future::Future<
1159            Output = Result<
1160                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1161                fidl::Error,
1162            >,
1163        > + Send;
1164    fn r#drop_ipv6_membership(
1165        &self,
1166        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1167    ) -> Self::DropIpv6MembershipResponseFut;
1168    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1169            Output = Result<
1170                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1171                fidl::Error,
1172            >,
1173        > + Send;
1174    fn r#set_ipv6_multicast_interface(
1175        &self,
1176        value: u64,
1177    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1178    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1179            Output = Result<
1180                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1181                fidl::Error,
1182            >,
1183        > + Send;
1184    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1185    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1186            Output = Result<
1187                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1188                fidl::Error,
1189            >,
1190        > + Send;
1191    fn r#set_ipv6_unicast_hops(
1192        &self,
1193        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1194    ) -> Self::SetIpv6UnicastHopsResponseFut;
1195    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1196            Output = Result<
1197                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1198                fidl::Error,
1199            >,
1200        > + Send;
1201    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1202    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1203            Output = Result<
1204                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1205                fidl::Error,
1206            >,
1207        > + Send;
1208    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1209    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1210            Output = Result<
1211                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1212                fidl::Error,
1213            >,
1214        > + Send;
1215    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1216    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1217            Output = Result<
1218                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1219                fidl::Error,
1220            >,
1221        > + Send;
1222    fn r#set_ipv6_multicast_hops(
1223        &self,
1224        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1225    ) -> Self::SetIpv6MulticastHopsResponseFut;
1226    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1227            Output = Result<
1228                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1229                fidl::Error,
1230            >,
1231        > + Send;
1232    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1233    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1234            Output = Result<
1235                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1236                fidl::Error,
1237            >,
1238        > + Send;
1239    fn r#set_ipv6_multicast_loopback(
1240        &self,
1241        value: bool,
1242    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1243    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1244            Output = Result<
1245                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1246                fidl::Error,
1247            >,
1248        > + Send;
1249    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1250    type SetIpv6OnlyResponseFut: std::future::Future<
1251            Output = Result<
1252                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1253                fidl::Error,
1254            >,
1255        > + Send;
1256    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1257    type GetIpv6OnlyResponseFut: std::future::Future<
1258            Output = Result<
1259                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1260                fidl::Error,
1261            >,
1262        > + Send;
1263    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1264    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1265            Output = Result<
1266                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1267                fidl::Error,
1268            >,
1269        > + Send;
1270    fn r#set_ipv6_receive_traffic_class(
1271        &self,
1272        value: bool,
1273    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1274    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1275            Output = Result<
1276                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1277                fidl::Error,
1278            >,
1279        > + Send;
1280    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1281    type SetIpv6TrafficClassResponseFut: std::future::Future<
1282            Output = Result<
1283                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1284                fidl::Error,
1285            >,
1286        > + Send;
1287    fn r#set_ipv6_traffic_class(
1288        &self,
1289        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1290    ) -> Self::SetIpv6TrafficClassResponseFut;
1291    type GetIpv6TrafficClassResponseFut: std::future::Future<
1292            Output = Result<
1293                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1294                fidl::Error,
1295            >,
1296        > + Send;
1297    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1298    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1299            Output = Result<
1300                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1301                fidl::Error,
1302            >,
1303        > + Send;
1304    fn r#set_ipv6_receive_packet_info(
1305        &self,
1306        value: bool,
1307    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1308    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1309            Output = Result<
1310                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1311                fidl::Error,
1312            >,
1313        > + Send;
1314    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1315    type GetOriginalDestinationResponseFut: std::future::Future<
1316            Output = Result<
1317                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1318                fidl::Error,
1319            >,
1320        > + Send;
1321    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1322    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1323        + Send;
1324    fn r#describe(&self) -> Self::DescribeResponseFut;
1325    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1326        + Send;
1327    fn r#recv_msg(
1328        &self,
1329        want_addr: bool,
1330        data_len: u32,
1331        want_control: bool,
1332        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1333    ) -> Self::RecvMsgResponseFut;
1334    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1335        + Send;
1336    fn r#send_msg(
1337        &self,
1338        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1339        data: &[u8],
1340        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1341        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1342    ) -> Self::SendMsgResponseFut;
1343    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1344        + Send;
1345    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1346    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1347        + Send;
1348    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1349    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1350        + Send;
1351    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1352    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1353        + Send;
1354    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1355    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1356        + Send;
1357    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1358    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1359        + Send;
1360    fn r#set_ipv6_checksum(
1361        &self,
1362        config: &Ipv6ChecksumConfiguration,
1363    ) -> Self::SetIpv6ChecksumResponseFut;
1364    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1365        + Send;
1366    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1367}
1368#[derive(Debug)]
1369#[cfg(target_os = "fuchsia")]
1370pub struct SocketSynchronousProxy {
1371    client: fidl::client::sync::Client,
1372}
1373
1374#[cfg(target_os = "fuchsia")]
1375impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1376    type Proxy = SocketProxy;
1377    type Protocol = SocketMarker;
1378
1379    fn from_channel(inner: fidl::Channel) -> Self {
1380        Self::new(inner)
1381    }
1382
1383    fn into_channel(self) -> fidl::Channel {
1384        self.client.into_channel()
1385    }
1386
1387    fn as_channel(&self) -> &fidl::Channel {
1388        self.client.as_channel()
1389    }
1390}
1391
1392#[cfg(target_os = "fuchsia")]
1393impl SocketSynchronousProxy {
1394    pub fn new(channel: fidl::Channel) -> Self {
1395        Self { client: fidl::client::sync::Client::new(channel) }
1396    }
1397
1398    pub fn into_channel(self) -> fidl::Channel {
1399        self.client.into_channel()
1400    }
1401
1402    /// Waits until an event arrives and returns it. It is safe for other
1403    /// threads to make concurrent requests while waiting for an event.
1404    pub fn wait_for_event(
1405        &self,
1406        deadline: zx::MonotonicInstant,
1407    ) -> Result<SocketEvent, fidl::Error> {
1408        SocketEvent::decode(self.client.wait_for_event::<SocketMarker>(deadline)?)
1409    }
1410
1411    pub fn r#clone(
1412        &self,
1413        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1414    ) -> Result<(), fidl::Error> {
1415        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1416            (request,),
1417            0x20d8a7aba2168a79,
1418            fidl::encoding::DynamicFlags::empty(),
1419        )
1420    }
1421
1422    /// Terminates the connection.
1423    ///
1424    /// After calling `Close`, the client must not send any other requests.
1425    ///
1426    /// Servers, after sending the status response, should close the connection
1427    /// regardless of status and without sending an epitaph.
1428    ///
1429    /// Closing the client end of the channel should be semantically equivalent
1430    /// to calling `Close` without knowing when the close has completed or its
1431    /// status.
1432    pub fn r#close(
1433        &self,
1434        ___deadline: zx::MonotonicInstant,
1435    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1436        let _response = self.client.send_query::<
1437            fidl::encoding::EmptyPayload,
1438            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1439            SocketMarker,
1440        >(
1441            (),
1442            0x5ac5d459ad7f657e,
1443            fidl::encoding::DynamicFlags::empty(),
1444            ___deadline,
1445        )?;
1446        Ok(_response.map(|x| x))
1447    }
1448
1449    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1450        let _response = self.client.send_query::<
1451            fidl::encoding::EmptyPayload,
1452            fidl_fuchsia_unknown::QueryableQueryResponse,
1453            SocketMarker,
1454        >(
1455            (),
1456            0x2658edee9decfc06,
1457            fidl::encoding::DynamicFlags::empty(),
1458            ___deadline,
1459        )?;
1460        Ok(_response.protocol)
1461    }
1462
1463    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1464    pub fn r#set_reuse_address(
1465        &self,
1466        mut value: bool,
1467        ___deadline: zx::MonotonicInstant,
1468    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1469        let _response = self.client.send_query::<
1470            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1471            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1472            SocketMarker,
1473        >(
1474            (value,),
1475            0x1fd74ee8b9a4a876,
1476            fidl::encoding::DynamicFlags::empty(),
1477            ___deadline,
1478        )?;
1479        Ok(_response.map(|x| x))
1480    }
1481
1482    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1483    pub fn r#get_reuse_address(
1484        &self,
1485        ___deadline: zx::MonotonicInstant,
1486    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1487        let _response =
1488            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1489                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1490                fidl_fuchsia_posix::Errno,
1491            >, SocketMarker>(
1492                (),
1493                0x67b7206b8d1bc0a5,
1494                fidl::encoding::DynamicFlags::empty(),
1495                ___deadline,
1496            )?;
1497        Ok(_response.map(|x| x.value))
1498    }
1499
1500    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1501    /// Returns the last error if there is an error set on the socket.
1502    pub fn r#get_error(
1503        &self,
1504        ___deadline: zx::MonotonicInstant,
1505    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1506        let _response =
1507            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1508                fidl::encoding::EmptyStruct,
1509                fidl_fuchsia_posix::Errno,
1510            >, SocketMarker>(
1511                (),
1512                0x5aad39b33e5f6ebb,
1513                fidl::encoding::DynamicFlags::empty(),
1514                ___deadline,
1515            )?;
1516        Ok(_response.map(|x| x))
1517    }
1518
1519    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1520    pub fn r#set_broadcast(
1521        &self,
1522        mut value: bool,
1523        ___deadline: zx::MonotonicInstant,
1524    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1525        let _response = self.client.send_query::<
1526            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1527            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1528            SocketMarker,
1529        >(
1530            (value,),
1531            0x6023e081ce3cd947,
1532            fidl::encoding::DynamicFlags::empty(),
1533            ___deadline,
1534        )?;
1535        Ok(_response.map(|x| x))
1536    }
1537
1538    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1539    pub fn r#get_broadcast(
1540        &self,
1541        ___deadline: zx::MonotonicInstant,
1542    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1543        let _response =
1544            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1545                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1546                fidl_fuchsia_posix::Errno,
1547            >, SocketMarker>(
1548                (),
1549                0x68796fc556f9780d,
1550                fidl::encoding::DynamicFlags::empty(),
1551                ___deadline,
1552            )?;
1553        Ok(_response.map(|x| x.value))
1554    }
1555
1556    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1557    pub fn r#set_send_buffer(
1558        &self,
1559        mut value_bytes: u64,
1560        ___deadline: zx::MonotonicInstant,
1561    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1562        let _response = self.client.send_query::<
1563            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1564            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1565            SocketMarker,
1566        >(
1567            (value_bytes,),
1568            0x756eac32d73a7a70,
1569            fidl::encoding::DynamicFlags::empty(),
1570            ___deadline,
1571        )?;
1572        Ok(_response.map(|x| x))
1573    }
1574
1575    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1576    pub fn r#get_send_buffer(
1577        &self,
1578        ___deadline: zx::MonotonicInstant,
1579    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1580        let _response =
1581            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1582                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1583                fidl_fuchsia_posix::Errno,
1584            >, SocketMarker>(
1585                (),
1586                0x78a52fd9c7b2410b,
1587                fidl::encoding::DynamicFlags::empty(),
1588                ___deadline,
1589            )?;
1590        Ok(_response.map(|x| x.value_bytes))
1591    }
1592
1593    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1594    pub fn r#set_receive_buffer(
1595        &self,
1596        mut value_bytes: u64,
1597        ___deadline: zx::MonotonicInstant,
1598    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1599        let _response = self.client.send_query::<
1600            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1601            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1602            SocketMarker,
1603        >(
1604            (value_bytes,),
1605            0x6b0cf2f1919c7001,
1606            fidl::encoding::DynamicFlags::empty(),
1607            ___deadline,
1608        )?;
1609        Ok(_response.map(|x| x))
1610    }
1611
1612    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1613    pub fn r#get_receive_buffer(
1614        &self,
1615        ___deadline: zx::MonotonicInstant,
1616    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1617        let _response =
1618            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1619                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1620                fidl_fuchsia_posix::Errno,
1621            >, SocketMarker>(
1622                (),
1623                0x14c1a4b64f709e5c,
1624                fidl::encoding::DynamicFlags::empty(),
1625                ___deadline,
1626            )?;
1627        Ok(_response.map(|x| x.value_bytes))
1628    }
1629
1630    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1631    pub fn r#set_keep_alive(
1632        &self,
1633        mut value: bool,
1634        ___deadline: zx::MonotonicInstant,
1635    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1636        let _response = self.client.send_query::<
1637            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1638            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1639            SocketMarker,
1640        >(
1641            (value,),
1642            0x572df8f0b920d2c7,
1643            fidl::encoding::DynamicFlags::empty(),
1644            ___deadline,
1645        )?;
1646        Ok(_response.map(|x| x))
1647    }
1648
1649    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1650    pub fn r#get_keep_alive(
1651        &self,
1652        ___deadline: zx::MonotonicInstant,
1653    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1654        let _response =
1655            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1656                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1657                fidl_fuchsia_posix::Errno,
1658            >, SocketMarker>(
1659                (),
1660                0x2dd29d3215f2c9d2,
1661                fidl::encoding::DynamicFlags::empty(),
1662                ___deadline,
1663            )?;
1664        Ok(_response.map(|x| x.value))
1665    }
1666
1667    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1668    pub fn r#set_out_of_band_inline(
1669        &self,
1670        mut value: bool,
1671        ___deadline: zx::MonotonicInstant,
1672    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1673        let _response = self.client.send_query::<
1674            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1675            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1676            SocketMarker,
1677        >(
1678            (value,),
1679            0x3ecb49968bee439,
1680            fidl::encoding::DynamicFlags::empty(),
1681            ___deadline,
1682        )?;
1683        Ok(_response.map(|x| x))
1684    }
1685
1686    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1687    pub fn r#get_out_of_band_inline(
1688        &self,
1689        ___deadline: zx::MonotonicInstant,
1690    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1691        let _response =
1692            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1693                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1694                fidl_fuchsia_posix::Errno,
1695            >, SocketMarker>(
1696                (),
1697                0x348c1ab3aeca1745,
1698                fidl::encoding::DynamicFlags::empty(),
1699                ___deadline,
1700            )?;
1701        Ok(_response.map(|x| x.value))
1702    }
1703
1704    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1705    pub fn r#set_no_check(
1706        &self,
1707        mut value: bool,
1708        ___deadline: zx::MonotonicInstant,
1709    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1710        let _response = self.client.send_query::<
1711            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1712            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1713            SocketMarker,
1714        >(
1715            (value,),
1716            0x6bbf00c53a4c78c2,
1717            fidl::encoding::DynamicFlags::empty(),
1718            ___deadline,
1719        )?;
1720        Ok(_response.map(|x| x))
1721    }
1722
1723    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1724    pub fn r#get_no_check(
1725        &self,
1726        ___deadline: zx::MonotonicInstant,
1727    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1728        let _response =
1729            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1730                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1731                fidl_fuchsia_posix::Errno,
1732            >, SocketMarker>(
1733                (),
1734                0x2cd4249286417694,
1735                fidl::encoding::DynamicFlags::empty(),
1736                ___deadline,
1737            )?;
1738        Ok(_response.map(|x| x.value))
1739    }
1740
1741    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1742    pub fn r#set_linger(
1743        &self,
1744        mut linger: bool,
1745        mut length_secs: u32,
1746        ___deadline: zx::MonotonicInstant,
1747    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1748        let _response = self.client.send_query::<
1749            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1750            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1751            SocketMarker,
1752        >(
1753            (linger, length_secs,),
1754            0x45386351246e998e,
1755            fidl::encoding::DynamicFlags::empty(),
1756            ___deadline,
1757        )?;
1758        Ok(_response.map(|x| x))
1759    }
1760
1761    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1762    pub fn r#get_linger(
1763        &self,
1764        ___deadline: zx::MonotonicInstant,
1765    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1766        let _response =
1767            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1768                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1769                fidl_fuchsia_posix::Errno,
1770            >, SocketMarker>(
1771                (),
1772                0x48eb20fc5ccb0e45,
1773                fidl::encoding::DynamicFlags::empty(),
1774                ___deadline,
1775            )?;
1776        Ok(_response.map(|x| (x.linger, x.length_secs)))
1777    }
1778
1779    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1780    pub fn r#set_reuse_port(
1781        &self,
1782        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
1783        ___deadline: zx::MonotonicInstant,
1784    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1785        let _response = self.client.send_query::<
1786            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1787            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1788            SocketMarker,
1789        >(
1790            (&mut value,),
1791            0x547dc9cc0455189e,
1792            fidl::encoding::DynamicFlags::empty(),
1793            ___deadline,
1794        )?;
1795        Ok(_response.map(|x| x))
1796    }
1797
1798    pub fn r#set_reuse_port_deprecated(
1799        &self,
1800        mut value: bool,
1801        ___deadline: zx::MonotonicInstant,
1802    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
1803    {
1804        let _response = self.client.send_query::<
1805            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
1806            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1807            SocketMarker,
1808        >(
1809            (value,),
1810            0x24dd3e5cb36d9ccb,
1811            fidl::encoding::DynamicFlags::empty(),
1812            ___deadline,
1813        )?;
1814        Ok(_response.map(|x| x))
1815    }
1816
1817    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1818    pub fn r#get_reuse_port(
1819        &self,
1820        ___deadline: zx::MonotonicInstant,
1821    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1822        let _response =
1823            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1824                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1825                fidl_fuchsia_posix::Errno,
1826            >, SocketMarker>(
1827                (),
1828                0x7a112c1ab54ff828,
1829                fidl::encoding::DynamicFlags::empty(),
1830                ___deadline,
1831            )?;
1832        Ok(_response.map(|x| x.value))
1833    }
1834
1835    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1836    pub fn r#get_accept_conn(
1837        &self,
1838        ___deadline: zx::MonotonicInstant,
1839    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1840        let _response =
1841            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1842                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1843                fidl_fuchsia_posix::Errno,
1844            >, SocketMarker>(
1845                (),
1846                0x67ce6db6c2ec8966,
1847                fidl::encoding::DynamicFlags::empty(),
1848                ___deadline,
1849            )?;
1850        Ok(_response.map(|x| x.value))
1851    }
1852
1853    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1854    pub fn r#set_bind_to_device(
1855        &self,
1856        mut value: &str,
1857        ___deadline: zx::MonotonicInstant,
1858    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1859        let _response = self.client.send_query::<
1860            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1861            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1862            SocketMarker,
1863        >(
1864            (value,),
1865            0x2118b483f28aafc4,
1866            fidl::encoding::DynamicFlags::empty(),
1867            ___deadline,
1868        )?;
1869        Ok(_response.map(|x| x))
1870    }
1871
1872    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1873    pub fn r#get_bind_to_device(
1874        &self,
1875        ___deadline: zx::MonotonicInstant,
1876    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1877        let _response =
1878            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1879                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1880                fidl_fuchsia_posix::Errno,
1881            >, SocketMarker>(
1882                (),
1883                0x1ab1fbf0ef7906c8,
1884                fidl::encoding::DynamicFlags::empty(),
1885                ___deadline,
1886            )?;
1887        Ok(_response.map(|x| x.value))
1888    }
1889
1890    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1891    /// If `value` is 0, this clears the bound interface.
1892    pub fn r#set_bind_to_interface_index(
1893        &self,
1894        mut value: u64,
1895        ___deadline: zx::MonotonicInstant,
1896    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1897    {
1898        let _response = self.client.send_query::<
1899            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1900            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1901            SocketMarker,
1902        >(
1903            (value,),
1904            0x6e387a0def00821,
1905            fidl::encoding::DynamicFlags::empty(),
1906            ___deadline,
1907        )?;
1908        Ok(_response.map(|x| x))
1909    }
1910
1911    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1912    pub fn r#get_bind_to_interface_index(
1913        &self,
1914        ___deadline: zx::MonotonicInstant,
1915    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
1916    {
1917        let _response =
1918            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1919                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
1920                fidl_fuchsia_posix::Errno,
1921            >, SocketMarker>(
1922                (),
1923                0x59c31dd3e3078295,
1924                fidl::encoding::DynamicFlags::empty(),
1925                ___deadline,
1926            )?;
1927        Ok(_response.map(|x| x.value))
1928    }
1929
1930    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1931    pub fn r#set_timestamp(
1932        &self,
1933        mut value: fidl_fuchsia_posix_socket::TimestampOption,
1934        ___deadline: zx::MonotonicInstant,
1935    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
1936        let _response = self.client.send_query::<
1937            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
1938            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1939            SocketMarker,
1940        >(
1941            (value,),
1942            0x285d6516c263d839,
1943            fidl::encoding::DynamicFlags::empty(),
1944            ___deadline,
1945        )?;
1946        Ok(_response.map(|x| x))
1947    }
1948
1949    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1950    pub fn r#get_timestamp(
1951        &self,
1952        ___deadline: zx::MonotonicInstant,
1953    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
1954        let _response =
1955            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1956                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
1957                fidl_fuchsia_posix::Errno,
1958            >, SocketMarker>(
1959                (),
1960                0x49f2fffbbcc2bd27,
1961                fidl::encoding::DynamicFlags::empty(),
1962                ___deadline,
1963            )?;
1964        Ok(_response.map(|x| x.value))
1965    }
1966
1967    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1968    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1969    /// mark can be set independently in each domain.
1970    pub fn r#set_mark(
1971        &self,
1972        mut domain: fidl_fuchsia_net::MarkDomain,
1973        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1974        ___deadline: zx::MonotonicInstant,
1975    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
1976        let _response = self.client.send_query::<
1977            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
1978            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1979            SocketMarker,
1980        >(
1981            (domain, mark,),
1982            0x6ead6de09f653236,
1983            fidl::encoding::DynamicFlags::empty(),
1984            ___deadline,
1985        )?;
1986        Ok(_response.map(|x| x))
1987    }
1988
1989    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1990    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1991    /// mark can be retrieved independently in each domain.
1992    pub fn r#get_mark(
1993        &self,
1994        mut domain: fidl_fuchsia_net::MarkDomain,
1995        ___deadline: zx::MonotonicInstant,
1996    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
1997        let _response = self.client.send_query::<
1998            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
1999            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
2000            SocketMarker,
2001        >(
2002            (domain,),
2003            0x57a2752c61d93d47,
2004            fidl::encoding::DynamicFlags::empty(),
2005            ___deadline,
2006        )?;
2007        Ok(_response.map(|x| x.mark))
2008    }
2009
2010    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
2011    pub fn r#get_cookie(
2012        &self,
2013        ___deadline: zx::MonotonicInstant,
2014    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
2015        let _response =
2016            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2017                fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
2018                fidl_fuchsia_posix::Errno,
2019            >, SocketMarker>(
2020                (),
2021                0x2c2f47fd8f924e52,
2022                fidl::encoding::DynamicFlags::empty(),
2023                ___deadline,
2024            )?;
2025        Ok(_response.map(|x| x.value))
2026    }
2027
2028    /// Sets the local address used for the socket.
2029    pub fn r#bind(
2030        &self,
2031        mut addr: &fidl_fuchsia_net::SocketAddress,
2032        ___deadline: zx::MonotonicInstant,
2033    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
2034        let _response = self.client.send_query::<
2035            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
2036            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2037            SocketMarker,
2038        >(
2039            (addr,),
2040            0x4bc6400ae92125d,
2041            fidl::encoding::DynamicFlags::empty(),
2042            ___deadline,
2043        )?;
2044        Ok(_response.map(|x| x))
2045    }
2046
2047    /// Initiates a connection to a remote address.
2048    pub fn r#connect(
2049        &self,
2050        mut addr: &fidl_fuchsia_net::SocketAddress,
2051        ___deadline: zx::MonotonicInstant,
2052    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
2053        let _response = self.client.send_query::<
2054            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
2055            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2056            SocketMarker,
2057        >(
2058            (addr,),
2059            0x5f05f19bfdd38871,
2060            fidl::encoding::DynamicFlags::empty(),
2061            ___deadline,
2062        )?;
2063        Ok(_response.map(|x| x))
2064    }
2065
2066    /// Clears connection information from this socket.
2067    pub fn r#disconnect(
2068        &self,
2069        ___deadline: zx::MonotonicInstant,
2070    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
2071        let _response =
2072            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2073                fidl::encoding::EmptyStruct,
2074                fidl_fuchsia_posix::Errno,
2075            >, SocketMarker>(
2076                (),
2077                0x74e63b91f7b29b2,
2078                fidl::encoding::DynamicFlags::empty(),
2079                ___deadline,
2080            )?;
2081        Ok(_response.map(|x| x))
2082    }
2083
2084    /// Retrieves the local socket address.
2085    pub fn r#get_sock_name(
2086        &self,
2087        ___deadline: zx::MonotonicInstant,
2088    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2089        let _response =
2090            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2091                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2092                fidl_fuchsia_posix::Errno,
2093            >, SocketMarker>(
2094                (),
2095                0x475f23f84a1a4f85,
2096                fidl::encoding::DynamicFlags::empty(),
2097                ___deadline,
2098            )?;
2099        Ok(_response.map(|x| x.addr))
2100    }
2101
2102    /// Retrieves the remote socket address.
2103    pub fn r#get_peer_name(
2104        &self,
2105        ___deadline: zx::MonotonicInstant,
2106    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2107        let _response =
2108            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2109                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2110                fidl_fuchsia_posix::Errno,
2111            >, SocketMarker>(
2112                (),
2113                0x1ffecf4bd5b6432e,
2114                fidl::encoding::DynamicFlags::empty(),
2115                ___deadline,
2116            )?;
2117        Ok(_response.map(|x| x.addr))
2118    }
2119
2120    /// Shuts down part of the socket.
2121    pub fn r#shutdown(
2122        &self,
2123        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2124        ___deadline: zx::MonotonicInstant,
2125    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2126        let _response = self.client.send_query::<
2127            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2128            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2129            SocketMarker,
2130        >(
2131            (mode,),
2132            0x247f38b6db68c336,
2133            fidl::encoding::DynamicFlags::empty(),
2134            ___deadline,
2135        )?;
2136        Ok(_response.map(|x| x))
2137    }
2138
2139    /// Set `SOL_IP` -> `IP_TOS`.
2140    pub fn r#set_ip_type_of_service(
2141        &self,
2142        mut value: u8,
2143        ___deadline: zx::MonotonicInstant,
2144    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2145    {
2146        let _response = self.client.send_query::<
2147            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2148            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2149            SocketMarker,
2150        >(
2151            (value,),
2152            0x995c600475b6d46,
2153            fidl::encoding::DynamicFlags::empty(),
2154            ___deadline,
2155        )?;
2156        Ok(_response.map(|x| x))
2157    }
2158
2159    /// Get `SOL_IP` -> `IP_TOS`.
2160    pub fn r#get_ip_type_of_service(
2161        &self,
2162        ___deadline: zx::MonotonicInstant,
2163    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2164    {
2165        let _response =
2166            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2167                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2168                fidl_fuchsia_posix::Errno,
2169            >, SocketMarker>(
2170                (),
2171                0x3814a04259f75fcb,
2172                fidl::encoding::DynamicFlags::empty(),
2173                ___deadline,
2174            )?;
2175        Ok(_response.map(|x| x.value))
2176    }
2177
2178    /// Set `SOL_IP` -> `IP_TTL`.
2179    pub fn r#set_ip_ttl(
2180        &self,
2181        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2182        ___deadline: zx::MonotonicInstant,
2183    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2184        let _response = self.client.send_query::<
2185            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2186            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2187            SocketMarker,
2188        >(
2189            (value,),
2190            0x29e2424b433ae1ef,
2191            fidl::encoding::DynamicFlags::empty(),
2192            ___deadline,
2193        )?;
2194        Ok(_response.map(|x| x))
2195    }
2196
2197    /// Get `SOL_IP` -> `IP_TTL`.
2198    pub fn r#get_ip_ttl(
2199        &self,
2200        ___deadline: zx::MonotonicInstant,
2201    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2202        let _response =
2203            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2204                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2205                fidl_fuchsia_posix::Errno,
2206            >, SocketMarker>(
2207                (),
2208                0x47e47fa1f24da471,
2209                fidl::encoding::DynamicFlags::empty(),
2210                ___deadline,
2211            )?;
2212        Ok(_response.map(|x| x.value))
2213    }
2214
2215    /// Set `SOL_IP` -> `IP_PKTINFO`.
2216    pub fn r#set_ip_packet_info(
2217        &self,
2218        mut value: bool,
2219        ___deadline: zx::MonotonicInstant,
2220    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2221    {
2222        let _response = self.client.send_query::<
2223            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2224            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2225            SocketMarker,
2226        >(
2227            (value,),
2228            0x392d16bee20c0e16,
2229            fidl::encoding::DynamicFlags::empty(),
2230            ___deadline,
2231        )?;
2232        Ok(_response.map(|x| x))
2233    }
2234
2235    /// Get `SOL_IP` -> `IP_PKTINFO`.
2236    pub fn r#get_ip_packet_info(
2237        &self,
2238        ___deadline: zx::MonotonicInstant,
2239    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2240    {
2241        let _response =
2242            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2243                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2244                fidl_fuchsia_posix::Errno,
2245            >, SocketMarker>(
2246                (),
2247                0x54b505f242280740,
2248                fidl::encoding::DynamicFlags::empty(),
2249                ___deadline,
2250            )?;
2251        Ok(_response.map(|x| x.value))
2252    }
2253
2254    /// Set `SOL_IP` -> `IP_RECVTOS`.
2255    pub fn r#set_ip_receive_type_of_service(
2256        &self,
2257        mut value: bool,
2258        ___deadline: zx::MonotonicInstant,
2259    ) -> Result<
2260        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2261        fidl::Error,
2262    > {
2263        let _response = self.client.send_query::<
2264            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2265            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2266            SocketMarker,
2267        >(
2268            (value,),
2269            0x6c4f6714995f84ef,
2270            fidl::encoding::DynamicFlags::empty(),
2271            ___deadline,
2272        )?;
2273        Ok(_response.map(|x| x))
2274    }
2275
2276    /// Get `SOL_IP` -> `IP_RECVTOS`.
2277    pub fn r#get_ip_receive_type_of_service(
2278        &self,
2279        ___deadline: zx::MonotonicInstant,
2280    ) -> Result<
2281        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2282        fidl::Error,
2283    > {
2284        let _response =
2285            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2286                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2287                fidl_fuchsia_posix::Errno,
2288            >, SocketMarker>(
2289                (),
2290                0x4158ba7dc2795960,
2291                fidl::encoding::DynamicFlags::empty(),
2292                ___deadline,
2293            )?;
2294        Ok(_response.map(|x| x.value))
2295    }
2296
2297    /// Set `SOL_IP` -> `IP_RECVTTL`.
2298    pub fn r#set_ip_receive_ttl(
2299        &self,
2300        mut value: bool,
2301        ___deadline: zx::MonotonicInstant,
2302    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2303    {
2304        let _response = self.client.send_query::<
2305            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2306            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2307            SocketMarker,
2308        >(
2309            (value,),
2310            0x46f15be0ce0ab82b,
2311            fidl::encoding::DynamicFlags::empty(),
2312            ___deadline,
2313        )?;
2314        Ok(_response.map(|x| x))
2315    }
2316
2317    /// Get `SOL_IP` -> `IP_RECVTTL`.
2318    pub fn r#get_ip_receive_ttl(
2319        &self,
2320        ___deadline: zx::MonotonicInstant,
2321    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2322    {
2323        let _response =
2324            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2325                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2326                fidl_fuchsia_posix::Errno,
2327            >, SocketMarker>(
2328                (),
2329                0x678ddd5a5dfa2eb5,
2330                fidl::encoding::DynamicFlags::empty(),
2331                ___deadline,
2332            )?;
2333        Ok(_response.map(|x| x.value))
2334    }
2335
2336    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2337    pub fn r#set_ip_multicast_interface(
2338        &self,
2339        mut iface: u64,
2340        mut address: &fidl_fuchsia_net::Ipv4Address,
2341        ___deadline: zx::MonotonicInstant,
2342    ) -> Result<
2343        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2344        fidl::Error,
2345    > {
2346        let _response = self.client.send_query::<
2347            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2348            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2349            SocketMarker,
2350        >(
2351            (iface, address,),
2352            0x752fbfa9b12befe,
2353            fidl::encoding::DynamicFlags::empty(),
2354            ___deadline,
2355        )?;
2356        Ok(_response.map(|x| x))
2357    }
2358
2359    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2360    pub fn r#get_ip_multicast_interface(
2361        &self,
2362        ___deadline: zx::MonotonicInstant,
2363    ) -> Result<
2364        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2365        fidl::Error,
2366    > {
2367        let _response =
2368            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2369                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2370                fidl_fuchsia_posix::Errno,
2371            >, SocketMarker>(
2372                (),
2373                0x320bd14c4df046c4,
2374                fidl::encoding::DynamicFlags::empty(),
2375                ___deadline,
2376            )?;
2377        Ok(_response.map(|x| x.value))
2378    }
2379
2380    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2381    pub fn r#set_ip_multicast_ttl(
2382        &self,
2383        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2384        ___deadline: zx::MonotonicInstant,
2385    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2386    {
2387        let _response = self.client.send_query::<
2388            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2389            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2390            SocketMarker,
2391        >(
2392            (value,),
2393            0x63134d53772916a1,
2394            fidl::encoding::DynamicFlags::empty(),
2395            ___deadline,
2396        )?;
2397        Ok(_response.map(|x| x))
2398    }
2399
2400    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2401    pub fn r#get_ip_multicast_ttl(
2402        &self,
2403        ___deadline: zx::MonotonicInstant,
2404    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2405    {
2406        let _response =
2407            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2408                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2409                fidl_fuchsia_posix::Errno,
2410            >, SocketMarker>(
2411                (),
2412                0x4665cd378f39e1a,
2413                fidl::encoding::DynamicFlags::empty(),
2414                ___deadline,
2415            )?;
2416        Ok(_response.map(|x| x.value))
2417    }
2418
2419    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2420    pub fn r#set_ip_multicast_loopback(
2421        &self,
2422        mut value: bool,
2423        ___deadline: zx::MonotonicInstant,
2424    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2425    {
2426        let _response = self.client.send_query::<
2427            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2428            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2429            SocketMarker,
2430        >(
2431            (value,),
2432            0x20c55c11f00943ea,
2433            fidl::encoding::DynamicFlags::empty(),
2434            ___deadline,
2435        )?;
2436        Ok(_response.map(|x| x))
2437    }
2438
2439    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2440    pub fn r#get_ip_multicast_loopback(
2441        &self,
2442        ___deadline: zx::MonotonicInstant,
2443    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2444    {
2445        let _response =
2446            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2447                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2448                fidl_fuchsia_posix::Errno,
2449            >, SocketMarker>(
2450                (),
2451                0x3b6b26ff558298f2,
2452                fidl::encoding::DynamicFlags::empty(),
2453                ___deadline,
2454            )?;
2455        Ok(_response.map(|x| x.value))
2456    }
2457
2458    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2459    pub fn r#add_ip_membership(
2460        &self,
2461        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2462        ___deadline: zx::MonotonicInstant,
2463    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2464    {
2465        let _response = self.client.send_query::<
2466            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2467            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2468            SocketMarker,
2469        >(
2470            (membership,),
2471            0x76bc7df115a3b4d0,
2472            fidl::encoding::DynamicFlags::empty(),
2473            ___deadline,
2474        )?;
2475        Ok(_response.map(|x| x))
2476    }
2477
2478    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2479    pub fn r#drop_ip_membership(
2480        &self,
2481        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2482        ___deadline: zx::MonotonicInstant,
2483    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2484    {
2485        let _response = self.client.send_query::<
2486            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2487            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2488            SocketMarker,
2489        >(
2490            (membership,),
2491            0x2888f3099188d03,
2492            fidl::encoding::DynamicFlags::empty(),
2493            ___deadline,
2494        )?;
2495        Ok(_response.map(|x| x))
2496    }
2497
2498    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2499    pub fn r#set_ip_transparent(
2500        &self,
2501        mut value: bool,
2502        ___deadline: zx::MonotonicInstant,
2503    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2504    {
2505        let _response = self.client.send_query::<
2506            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2507            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2508            SocketMarker,
2509        >(
2510            (value,),
2511            0x1ae532b0c066e3a0,
2512            fidl::encoding::DynamicFlags::empty(),
2513            ___deadline,
2514        )?;
2515        Ok(_response.map(|x| x))
2516    }
2517
2518    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2519    pub fn r#get_ip_transparent(
2520        &self,
2521        ___deadline: zx::MonotonicInstant,
2522    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2523    {
2524        let _response =
2525            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2526                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2527                fidl_fuchsia_posix::Errno,
2528            >, SocketMarker>(
2529                (),
2530                0x51d43695962ebfb5,
2531                fidl::encoding::DynamicFlags::empty(),
2532                ___deadline,
2533            )?;
2534        Ok(_response.map(|x| x.value))
2535    }
2536
2537    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2538    pub fn r#set_ip_receive_original_destination_address(
2539        &self,
2540        mut value: bool,
2541        ___deadline: zx::MonotonicInstant,
2542    ) -> Result<
2543        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2544        fidl::Error,
2545    > {
2546        let _response = self.client.send_query::<
2547            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2548            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2549            SocketMarker,
2550        >(
2551            (value,),
2552            0x4722b4ce52f7840,
2553            fidl::encoding::DynamicFlags::empty(),
2554            ___deadline,
2555        )?;
2556        Ok(_response.map(|x| x))
2557    }
2558
2559    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2560    pub fn r#get_ip_receive_original_destination_address(
2561        &self,
2562        ___deadline: zx::MonotonicInstant,
2563    ) -> Result<
2564        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2565        fidl::Error,
2566    > {
2567        let _response = self.client.send_query::<
2568            fidl::encoding::EmptyPayload,
2569            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2570            SocketMarker,
2571        >(
2572            (),
2573            0x2a0e7dc5d6bfdfe9,
2574            fidl::encoding::DynamicFlags::empty(),
2575            ___deadline,
2576        )?;
2577        Ok(_response.map(|x| x.value))
2578    }
2579
2580    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2581    pub fn r#add_ipv6_membership(
2582        &self,
2583        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2584        ___deadline: zx::MonotonicInstant,
2585    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2586    {
2587        let _response = self.client.send_query::<
2588            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2589            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2590            SocketMarker,
2591        >(
2592            (membership,),
2593            0x7c94727acb4ea4b3,
2594            fidl::encoding::DynamicFlags::empty(),
2595            ___deadline,
2596        )?;
2597        Ok(_response.map(|x| x))
2598    }
2599
2600    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2601    pub fn r#drop_ipv6_membership(
2602        &self,
2603        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2604        ___deadline: zx::MonotonicInstant,
2605    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2606    {
2607        let _response = self.client.send_query::<
2608            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2609            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2610            SocketMarker,
2611        >(
2612            (membership,),
2613            0x42104c70ccaba304,
2614            fidl::encoding::DynamicFlags::empty(),
2615            ___deadline,
2616        )?;
2617        Ok(_response.map(|x| x))
2618    }
2619
2620    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2621    pub fn r#set_ipv6_multicast_interface(
2622        &self,
2623        mut value: u64,
2624        ___deadline: zx::MonotonicInstant,
2625    ) -> Result<
2626        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2627        fidl::Error,
2628    > {
2629        let _response = self.client.send_query::<
2630            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2631            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2632            SocketMarker,
2633        >(
2634            (value,),
2635            0x135f76db3774ab3b,
2636            fidl::encoding::DynamicFlags::empty(),
2637            ___deadline,
2638        )?;
2639        Ok(_response.map(|x| x))
2640    }
2641
2642    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2643    pub fn r#get_ipv6_multicast_interface(
2644        &self,
2645        ___deadline: zx::MonotonicInstant,
2646    ) -> Result<
2647        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2648        fidl::Error,
2649    > {
2650        let _response =
2651            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2652                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2653                fidl_fuchsia_posix::Errno,
2654            >, SocketMarker>(
2655                (),
2656                0x1f26fcdd348f1882,
2657                fidl::encoding::DynamicFlags::empty(),
2658                ___deadline,
2659            )?;
2660        Ok(_response.map(|x| x.value))
2661    }
2662
2663    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2664    pub fn r#set_ipv6_unicast_hops(
2665        &self,
2666        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2667        ___deadline: zx::MonotonicInstant,
2668    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2669    {
2670        let _response = self.client.send_query::<
2671            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2672            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2673            SocketMarker,
2674        >(
2675            (value,),
2676            0x157d51e98f462859,
2677            fidl::encoding::DynamicFlags::empty(),
2678            ___deadline,
2679        )?;
2680        Ok(_response.map(|x| x))
2681    }
2682
2683    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2684    pub fn r#get_ipv6_unicast_hops(
2685        &self,
2686        ___deadline: zx::MonotonicInstant,
2687    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2688    {
2689        let _response =
2690            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2691                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2692                fidl_fuchsia_posix::Errno,
2693            >, SocketMarker>(
2694                (),
2695                0x21f4641cad8bd8d2,
2696                fidl::encoding::DynamicFlags::empty(),
2697                ___deadline,
2698            )?;
2699        Ok(_response.map(|x| x.value))
2700    }
2701
2702    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2703    pub fn r#set_ipv6_receive_hop_limit(
2704        &self,
2705        mut value: bool,
2706        ___deadline: zx::MonotonicInstant,
2707    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2708    {
2709        let _response = self.client.send_query::<
2710            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2711            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2712            SocketMarker,
2713        >(
2714            (value,),
2715            0x5c24808ed2e84a1e,
2716            fidl::encoding::DynamicFlags::empty(),
2717            ___deadline,
2718        )?;
2719        Ok(_response.map(|x| x))
2720    }
2721
2722    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2723    pub fn r#get_ipv6_receive_hop_limit(
2724        &self,
2725        ___deadline: zx::MonotonicInstant,
2726    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2727    {
2728        let _response =
2729            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2730                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2731                fidl_fuchsia_posix::Errno,
2732            >, SocketMarker>(
2733                (),
2734                0x341e06689885b4c0,
2735                fidl::encoding::DynamicFlags::empty(),
2736                ___deadline,
2737            )?;
2738        Ok(_response.map(|x| x.value))
2739    }
2740
2741    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2742    pub fn r#set_ipv6_multicast_hops(
2743        &self,
2744        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2745        ___deadline: zx::MonotonicInstant,
2746    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2747    {
2748        let _response = self.client.send_query::<
2749            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2750            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2751            SocketMarker,
2752        >(
2753            (value,),
2754            0x25b9cd4d181f82c1,
2755            fidl::encoding::DynamicFlags::empty(),
2756            ___deadline,
2757        )?;
2758        Ok(_response.map(|x| x))
2759    }
2760
2761    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2762    pub fn r#get_ipv6_multicast_hops(
2763        &self,
2764        ___deadline: zx::MonotonicInstant,
2765    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2766    {
2767        let _response =
2768            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2769                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2770                fidl_fuchsia_posix::Errno,
2771            >, SocketMarker>(
2772                (),
2773                0x52916948a365012a,
2774                fidl::encoding::DynamicFlags::empty(),
2775                ___deadline,
2776            )?;
2777        Ok(_response.map(|x| x.value))
2778    }
2779
2780    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2781    pub fn r#set_ipv6_multicast_loopback(
2782        &self,
2783        mut value: bool,
2784        ___deadline: zx::MonotonicInstant,
2785    ) -> Result<
2786        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2787        fidl::Error,
2788    > {
2789        let _response = self.client.send_query::<
2790            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2791            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2792            SocketMarker,
2793        >(
2794            (value,),
2795            0x55701c409ff41b40,
2796            fidl::encoding::DynamicFlags::empty(),
2797            ___deadline,
2798        )?;
2799        Ok(_response.map(|x| x))
2800    }
2801
2802    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2803    pub fn r#get_ipv6_multicast_loopback(
2804        &self,
2805        ___deadline: zx::MonotonicInstant,
2806    ) -> Result<
2807        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2808        fidl::Error,
2809    > {
2810        let _response =
2811            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2812                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2813                fidl_fuchsia_posix::Errno,
2814            >, SocketMarker>(
2815                (),
2816                0x4415b701fde319c3,
2817                fidl::encoding::DynamicFlags::empty(),
2818                ___deadline,
2819            )?;
2820        Ok(_response.map(|x| x.value))
2821    }
2822
2823    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2824    pub fn r#set_ipv6_only(
2825        &self,
2826        mut value: bool,
2827        ___deadline: zx::MonotonicInstant,
2828    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2829        let _response = self.client.send_query::<
2830            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2831            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2832            SocketMarker,
2833        >(
2834            (value,),
2835            0x4873f1364758cbba,
2836            fidl::encoding::DynamicFlags::empty(),
2837            ___deadline,
2838        )?;
2839        Ok(_response.map(|x| x))
2840    }
2841
2842    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2843    pub fn r#get_ipv6_only(
2844        &self,
2845        ___deadline: zx::MonotonicInstant,
2846    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2847        let _response =
2848            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2849                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2850                fidl_fuchsia_posix::Errno,
2851            >, SocketMarker>(
2852                (),
2853                0x4aa3340a1a26b89c,
2854                fidl::encoding::DynamicFlags::empty(),
2855                ___deadline,
2856            )?;
2857        Ok(_response.map(|x| x.value))
2858    }
2859
2860    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2861    pub fn r#set_ipv6_receive_traffic_class(
2862        &self,
2863        mut value: bool,
2864        ___deadline: zx::MonotonicInstant,
2865    ) -> Result<
2866        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2867        fidl::Error,
2868    > {
2869        let _response = self.client.send_query::<
2870            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2871            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2872            SocketMarker,
2873        >(
2874            (value,),
2875            0x58f07c8788d099a0,
2876            fidl::encoding::DynamicFlags::empty(),
2877            ___deadline,
2878        )?;
2879        Ok(_response.map(|x| x))
2880    }
2881
2882    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2883    pub fn r#get_ipv6_receive_traffic_class(
2884        &self,
2885        ___deadline: zx::MonotonicInstant,
2886    ) -> Result<
2887        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2888        fidl::Error,
2889    > {
2890        let _response =
2891            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2892                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2893                fidl_fuchsia_posix::Errno,
2894            >, SocketMarker>(
2895                (),
2896                0x2e334df1da553ffa,
2897                fidl::encoding::DynamicFlags::empty(),
2898                ___deadline,
2899            )?;
2900        Ok(_response.map(|x| x.value))
2901    }
2902
2903    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2904    pub fn r#set_ipv6_traffic_class(
2905        &self,
2906        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2907        ___deadline: zx::MonotonicInstant,
2908    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2909    {
2910        let _response = self.client.send_query::<
2911            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2912            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2913            SocketMarker,
2914        >(
2915            (value,),
2916            0x6af077800c5a0b4f,
2917            fidl::encoding::DynamicFlags::empty(),
2918            ___deadline,
2919        )?;
2920        Ok(_response.map(|x| x))
2921    }
2922
2923    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2924    pub fn r#get_ipv6_traffic_class(
2925        &self,
2926        ___deadline: zx::MonotonicInstant,
2927    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2928    {
2929        let _response =
2930            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2931                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2932                fidl_fuchsia_posix::Errno,
2933            >, SocketMarker>(
2934                (),
2935                0x6baf6eed8fc2f04,
2936                fidl::encoding::DynamicFlags::empty(),
2937                ___deadline,
2938            )?;
2939        Ok(_response.map(|x| x.value))
2940    }
2941
2942    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2943    pub fn r#set_ipv6_receive_packet_info(
2944        &self,
2945        mut value: bool,
2946        ___deadline: zx::MonotonicInstant,
2947    ) -> Result<
2948        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2949        fidl::Error,
2950    > {
2951        let _response = self.client.send_query::<
2952            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2953            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2954            SocketMarker,
2955        >(
2956            (value,),
2957            0x19259775b1a92768,
2958            fidl::encoding::DynamicFlags::empty(),
2959            ___deadline,
2960        )?;
2961        Ok(_response.map(|x| x))
2962    }
2963
2964    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2965    pub fn r#get_ipv6_receive_packet_info(
2966        &self,
2967        ___deadline: zx::MonotonicInstant,
2968    ) -> Result<
2969        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2970        fidl::Error,
2971    > {
2972        let _response =
2973            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2974                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2975                fidl_fuchsia_posix::Errno,
2976            >, SocketMarker>(
2977                (),
2978                0x7acd4a2775baec75,
2979                fidl::encoding::DynamicFlags::empty(),
2980                ___deadline,
2981            )?;
2982        Ok(_response.map(|x| x.value))
2983    }
2984
2985    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2986    pub fn r#get_original_destination(
2987        &self,
2988        ___deadline: zx::MonotonicInstant,
2989    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2990    {
2991        let _response =
2992            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2993                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
2994                fidl_fuchsia_posix::Errno,
2995            >, SocketMarker>(
2996                (),
2997                0x38bf28f0dafdbac0,
2998                fidl::encoding::DynamicFlags::empty(),
2999                ___deadline,
3000            )?;
3001        Ok(_response.map(|x| x.value))
3002    }
3003
3004    pub fn r#describe(
3005        &self,
3006        ___deadline: zx::MonotonicInstant,
3007    ) -> Result<SocketDescribeResponse, fidl::Error> {
3008        let _response = self
3009            .client
3010            .send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse, SocketMarker>(
3011                (),
3012                0x335706eccf54a135,
3013                fidl::encoding::DynamicFlags::empty(),
3014                ___deadline,
3015            )?;
3016        Ok(_response)
3017    }
3018
3019    /// Receives a message from the socket.
3020    ///
3021    /// + request `want_addr` request message's source address information to
3022    ///   be returned.
3023    /// + request `data_len` the maximum allowed length of the response data
3024    ///   buffer.
3025    /// + request `want_control` request ancillary data to be returned.
3026    /// + request `flags` flags for the receive request.
3027    /// - response `addr` the message's source address information, if
3028    ///   requested.
3029    /// - response `data` the message.
3030    /// - response `control` control messages, if requested.
3031    /// - response `truncated` indicates whether or not the returned message
3032    ///   was truncated.
3033    pub fn r#recv_msg(
3034        &self,
3035        mut want_addr: bool,
3036        mut data_len: u32,
3037        mut want_control: bool,
3038        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
3039        ___deadline: zx::MonotonicInstant,
3040    ) -> Result<SocketRecvMsgResult, fidl::Error> {
3041        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
3042            SocketRecvMsgResponse,
3043            fidl_fuchsia_posix::Errno,
3044        >, SocketMarker>(
3045            (want_addr, data_len, want_control, flags),
3046            0x1dfb695351d3aa1d,
3047            fidl::encoding::DynamicFlags::empty(),
3048            ___deadline,
3049        )?;
3050        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
3051    }
3052
3053    /// Sends a message on the socket.
3054    ///
3055    /// + request `addr` the address to send the message to. If unset, will
3056    ///   send to the connected peer.
3057    /// + request `data` the message.
3058    /// + request `control` ancillary data.
3059    /// + request `flags` flags for the send request.
3060    pub fn r#send_msg(
3061        &self,
3062        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
3063        mut data: &[u8],
3064        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
3065        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
3066        ___deadline: zx::MonotonicInstant,
3067    ) -> Result<SocketSendMsgResult, fidl::Error> {
3068        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
3069            fidl::encoding::EmptyStruct,
3070            fidl_fuchsia_posix::Errno,
3071        >, SocketMarker>(
3072            (addr, data, control, flags),
3073            0x2cf1eac9a7fc8958,
3074            fidl::encoding::DynamicFlags::empty(),
3075            ___deadline,
3076        )?;
3077        Ok(_response.map(|x| x))
3078    }
3079
3080    /// Retrieves creation information from the socket.
3081    ///
3082    /// - response `domain` the socket's associated domain.
3083    /// - response `proto` the socket's associated protocol.
3084    pub fn r#get_info(
3085        &self,
3086        ___deadline: zx::MonotonicInstant,
3087    ) -> Result<SocketGetInfoResult, fidl::Error> {
3088        let _response =
3089            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3090                SocketGetInfoResponse,
3091                fidl_fuchsia_posix::Errno,
3092            >, SocketMarker>(
3093                (),
3094                0x39676f75aec339ba,
3095                fidl::encoding::DynamicFlags::empty(),
3096                ___deadline,
3097            )?;
3098        Ok(_response.map(|x| (x.domain, x.proto)))
3099    }
3100
3101    /// Set `SOL_IP` -> `IP_HDRINCL`.
3102    pub fn r#set_ip_header_included(
3103        &self,
3104        mut value: bool,
3105        ___deadline: zx::MonotonicInstant,
3106    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
3107        let _response =
3108            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
3109                fidl::encoding::EmptyStruct,
3110                fidl_fuchsia_posix::Errno,
3111            >, SocketMarker>(
3112                (value,),
3113                0x5d06a606d95e8f3,
3114                fidl::encoding::DynamicFlags::empty(),
3115                ___deadline,
3116            )?;
3117        Ok(_response.map(|x| x))
3118    }
3119
3120    /// Get `SOL_IP` -> `IP_HDRINCL`.
3121    pub fn r#get_ip_header_included(
3122        &self,
3123        ___deadline: zx::MonotonicInstant,
3124    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
3125        let _response =
3126            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3127                SocketGetIpHeaderIncludedResponse,
3128                fidl_fuchsia_posix::Errno,
3129            >, SocketMarker>(
3130                (),
3131                0x76125ad1f4d175f6,
3132                fidl::encoding::DynamicFlags::empty(),
3133                ___deadline,
3134            )?;
3135        Ok(_response.map(|x| x.value))
3136    }
3137
3138    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
3139    pub fn r#set_icmpv6_filter(
3140        &self,
3141        mut filter: &Icmpv6Filter,
3142        ___deadline: zx::MonotonicInstant,
3143    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3144        let _response =
3145            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3146                fidl::encoding::EmptyStruct,
3147                fidl_fuchsia_posix::Errno,
3148            >, SocketMarker>(
3149                (filter,),
3150                0x4ebea92a43ae68a9,
3151                fidl::encoding::DynamicFlags::empty(),
3152                ___deadline,
3153            )?;
3154        Ok(_response.map(|x| x))
3155    }
3156
3157    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3158    pub fn r#get_icmpv6_filter(
3159        &self,
3160        ___deadline: zx::MonotonicInstant,
3161    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3162        let _response =
3163            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3164                SocketGetIcmpv6FilterResponse,
3165                fidl_fuchsia_posix::Errno,
3166            >, SocketMarker>(
3167                (),
3168                0x43bd4f3bc0970ace,
3169                fidl::encoding::DynamicFlags::empty(),
3170                ___deadline,
3171            )?;
3172        Ok(_response.map(|x| x.filter))
3173    }
3174
3175    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3176    pub fn r#set_ipv6_checksum(
3177        &self,
3178        mut config: &Ipv6ChecksumConfiguration,
3179        ___deadline: zx::MonotonicInstant,
3180    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3181        let _response =
3182            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3183                fidl::encoding::EmptyStruct,
3184                fidl_fuchsia_posix::Errno,
3185            >, SocketMarker>(
3186                (config,),
3187                0x18b7809577199cb4,
3188                fidl::encoding::DynamicFlags::empty(),
3189                ___deadline,
3190            )?;
3191        Ok(_response.map(|x| x))
3192    }
3193
3194    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3195    pub fn r#get_ipv6_checksum(
3196        &self,
3197        ___deadline: zx::MonotonicInstant,
3198    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3199        let _response =
3200            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3201                SocketGetIpv6ChecksumResponse,
3202                fidl_fuchsia_posix::Errno,
3203            >, SocketMarker>(
3204                (),
3205                0x1847bf5b2d263dd,
3206                fidl::encoding::DynamicFlags::empty(),
3207                ___deadline,
3208            )?;
3209        Ok(_response.map(|x| x.config))
3210    }
3211}
3212
3213#[cfg(target_os = "fuchsia")]
3214impl From<SocketSynchronousProxy> for zx::NullableHandle {
3215    fn from(value: SocketSynchronousProxy) -> Self {
3216        value.into_channel().into()
3217    }
3218}
3219
3220#[cfg(target_os = "fuchsia")]
3221impl From<fidl::Channel> for SocketSynchronousProxy {
3222    fn from(value: fidl::Channel) -> Self {
3223        Self::new(value)
3224    }
3225}
3226
3227#[cfg(target_os = "fuchsia")]
3228impl fidl::endpoints::FromClient for SocketSynchronousProxy {
3229    type Protocol = SocketMarker;
3230
3231    fn from_client(value: fidl::endpoints::ClientEnd<SocketMarker>) -> Self {
3232        Self::new(value.into_channel())
3233    }
3234}
3235
3236#[derive(Debug, Clone)]
3237pub struct SocketProxy {
3238    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3239}
3240
3241impl fidl::endpoints::Proxy for SocketProxy {
3242    type Protocol = SocketMarker;
3243
3244    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3245        Self::new(inner)
3246    }
3247
3248    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3249        self.client.into_channel().map_err(|client| Self { client })
3250    }
3251
3252    fn as_channel(&self) -> &::fidl::AsyncChannel {
3253        self.client.as_channel()
3254    }
3255}
3256
3257impl SocketProxy {
3258    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3259    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3260        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3261        Self { client: fidl::client::Client::new(channel, protocol_name) }
3262    }
3263
3264    /// Get a Stream of events from the remote end of the protocol.
3265    ///
3266    /// # Panics
3267    ///
3268    /// Panics if the event stream was already taken.
3269    pub fn take_event_stream(&self) -> SocketEventStream {
3270        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3271    }
3272
3273    pub fn r#clone(
3274        &self,
3275        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3276    ) -> Result<(), fidl::Error> {
3277        SocketProxyInterface::r#clone(self, request)
3278    }
3279
3280    /// Terminates the connection.
3281    ///
3282    /// After calling `Close`, the client must not send any other requests.
3283    ///
3284    /// Servers, after sending the status response, should close the connection
3285    /// regardless of status and without sending an epitaph.
3286    ///
3287    /// Closing the client end of the channel should be semantically equivalent
3288    /// to calling `Close` without knowing when the close has completed or its
3289    /// status.
3290    pub fn r#close(
3291        &self,
3292    ) -> fidl::client::QueryResponseFut<
3293        fidl_fuchsia_unknown::CloseableCloseResult,
3294        fidl::encoding::DefaultFuchsiaResourceDialect,
3295    > {
3296        SocketProxyInterface::r#close(self)
3297    }
3298
3299    pub fn r#query(
3300        &self,
3301    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3302    {
3303        SocketProxyInterface::r#query(self)
3304    }
3305
3306    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3307    pub fn r#set_reuse_address(
3308        &self,
3309        mut value: bool,
3310    ) -> fidl::client::QueryResponseFut<
3311        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3312        fidl::encoding::DefaultFuchsiaResourceDialect,
3313    > {
3314        SocketProxyInterface::r#set_reuse_address(self, value)
3315    }
3316
3317    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3318    pub fn r#get_reuse_address(
3319        &self,
3320    ) -> fidl::client::QueryResponseFut<
3321        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3322        fidl::encoding::DefaultFuchsiaResourceDialect,
3323    > {
3324        SocketProxyInterface::r#get_reuse_address(self)
3325    }
3326
3327    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3328    /// Returns the last error if there is an error set on the socket.
3329    pub fn r#get_error(
3330        &self,
3331    ) -> fidl::client::QueryResponseFut<
3332        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3333        fidl::encoding::DefaultFuchsiaResourceDialect,
3334    > {
3335        SocketProxyInterface::r#get_error(self)
3336    }
3337
3338    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3339    pub fn r#set_broadcast(
3340        &self,
3341        mut value: bool,
3342    ) -> fidl::client::QueryResponseFut<
3343        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3344        fidl::encoding::DefaultFuchsiaResourceDialect,
3345    > {
3346        SocketProxyInterface::r#set_broadcast(self, value)
3347    }
3348
3349    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3350    pub fn r#get_broadcast(
3351        &self,
3352    ) -> fidl::client::QueryResponseFut<
3353        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3354        fidl::encoding::DefaultFuchsiaResourceDialect,
3355    > {
3356        SocketProxyInterface::r#get_broadcast(self)
3357    }
3358
3359    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3360    pub fn r#set_send_buffer(
3361        &self,
3362        mut value_bytes: u64,
3363    ) -> fidl::client::QueryResponseFut<
3364        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3365        fidl::encoding::DefaultFuchsiaResourceDialect,
3366    > {
3367        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3368    }
3369
3370    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3371    pub fn r#get_send_buffer(
3372        &self,
3373    ) -> fidl::client::QueryResponseFut<
3374        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3375        fidl::encoding::DefaultFuchsiaResourceDialect,
3376    > {
3377        SocketProxyInterface::r#get_send_buffer(self)
3378    }
3379
3380    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3381    pub fn r#set_receive_buffer(
3382        &self,
3383        mut value_bytes: u64,
3384    ) -> fidl::client::QueryResponseFut<
3385        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3386        fidl::encoding::DefaultFuchsiaResourceDialect,
3387    > {
3388        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3389    }
3390
3391    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3392    pub fn r#get_receive_buffer(
3393        &self,
3394    ) -> fidl::client::QueryResponseFut<
3395        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3396        fidl::encoding::DefaultFuchsiaResourceDialect,
3397    > {
3398        SocketProxyInterface::r#get_receive_buffer(self)
3399    }
3400
3401    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3402    pub fn r#set_keep_alive(
3403        &self,
3404        mut value: bool,
3405    ) -> fidl::client::QueryResponseFut<
3406        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3407        fidl::encoding::DefaultFuchsiaResourceDialect,
3408    > {
3409        SocketProxyInterface::r#set_keep_alive(self, value)
3410    }
3411
3412    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3413    pub fn r#get_keep_alive(
3414        &self,
3415    ) -> fidl::client::QueryResponseFut<
3416        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3417        fidl::encoding::DefaultFuchsiaResourceDialect,
3418    > {
3419        SocketProxyInterface::r#get_keep_alive(self)
3420    }
3421
3422    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3423    pub fn r#set_out_of_band_inline(
3424        &self,
3425        mut value: bool,
3426    ) -> fidl::client::QueryResponseFut<
3427        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3428        fidl::encoding::DefaultFuchsiaResourceDialect,
3429    > {
3430        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3431    }
3432
3433    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3434    pub fn r#get_out_of_band_inline(
3435        &self,
3436    ) -> fidl::client::QueryResponseFut<
3437        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3438        fidl::encoding::DefaultFuchsiaResourceDialect,
3439    > {
3440        SocketProxyInterface::r#get_out_of_band_inline(self)
3441    }
3442
3443    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3444    pub fn r#set_no_check(
3445        &self,
3446        mut value: bool,
3447    ) -> fidl::client::QueryResponseFut<
3448        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3449        fidl::encoding::DefaultFuchsiaResourceDialect,
3450    > {
3451        SocketProxyInterface::r#set_no_check(self, value)
3452    }
3453
3454    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3455    pub fn r#get_no_check(
3456        &self,
3457    ) -> fidl::client::QueryResponseFut<
3458        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3459        fidl::encoding::DefaultFuchsiaResourceDialect,
3460    > {
3461        SocketProxyInterface::r#get_no_check(self)
3462    }
3463
3464    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3465    pub fn r#set_linger(
3466        &self,
3467        mut linger: bool,
3468        mut length_secs: u32,
3469    ) -> fidl::client::QueryResponseFut<
3470        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3471        fidl::encoding::DefaultFuchsiaResourceDialect,
3472    > {
3473        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3474    }
3475
3476    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3477    pub fn r#get_linger(
3478        &self,
3479    ) -> fidl::client::QueryResponseFut<
3480        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3481        fidl::encoding::DefaultFuchsiaResourceDialect,
3482    > {
3483        SocketProxyInterface::r#get_linger(self)
3484    }
3485
3486    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3487    pub fn r#set_reuse_port(
3488        &self,
3489        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
3490    ) -> fidl::client::QueryResponseFut<
3491        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3492        fidl::encoding::DefaultFuchsiaResourceDialect,
3493    > {
3494        SocketProxyInterface::r#set_reuse_port(self, value)
3495    }
3496
3497    pub fn r#set_reuse_port_deprecated(
3498        &self,
3499        mut value: bool,
3500    ) -> fidl::client::QueryResponseFut<
3501        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
3502        fidl::encoding::DefaultFuchsiaResourceDialect,
3503    > {
3504        SocketProxyInterface::r#set_reuse_port_deprecated(self, value)
3505    }
3506
3507    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
3508    pub fn r#get_reuse_port(
3509        &self,
3510    ) -> fidl::client::QueryResponseFut<
3511        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
3512        fidl::encoding::DefaultFuchsiaResourceDialect,
3513    > {
3514        SocketProxyInterface::r#get_reuse_port(self)
3515    }
3516
3517    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
3518    pub fn r#get_accept_conn(
3519        &self,
3520    ) -> fidl::client::QueryResponseFut<
3521        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
3522        fidl::encoding::DefaultFuchsiaResourceDialect,
3523    > {
3524        SocketProxyInterface::r#get_accept_conn(self)
3525    }
3526
3527    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3528    pub fn r#set_bind_to_device(
3529        &self,
3530        mut value: &str,
3531    ) -> fidl::client::QueryResponseFut<
3532        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
3533        fidl::encoding::DefaultFuchsiaResourceDialect,
3534    > {
3535        SocketProxyInterface::r#set_bind_to_device(self, value)
3536    }
3537
3538    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3539    pub fn r#get_bind_to_device(
3540        &self,
3541    ) -> fidl::client::QueryResponseFut<
3542        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
3543        fidl::encoding::DefaultFuchsiaResourceDialect,
3544    > {
3545        SocketProxyInterface::r#get_bind_to_device(self)
3546    }
3547
3548    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3549    /// If `value` is 0, this clears the bound interface.
3550    pub fn r#set_bind_to_interface_index(
3551        &self,
3552        mut value: u64,
3553    ) -> fidl::client::QueryResponseFut<
3554        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
3555        fidl::encoding::DefaultFuchsiaResourceDialect,
3556    > {
3557        SocketProxyInterface::r#set_bind_to_interface_index(self, value)
3558    }
3559
3560    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3561    pub fn r#get_bind_to_interface_index(
3562        &self,
3563    ) -> fidl::client::QueryResponseFut<
3564        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
3565        fidl::encoding::DefaultFuchsiaResourceDialect,
3566    > {
3567        SocketProxyInterface::r#get_bind_to_interface_index(self)
3568    }
3569
3570    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3571    pub fn r#set_timestamp(
3572        &self,
3573        mut value: fidl_fuchsia_posix_socket::TimestampOption,
3574    ) -> fidl::client::QueryResponseFut<
3575        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
3576        fidl::encoding::DefaultFuchsiaResourceDialect,
3577    > {
3578        SocketProxyInterface::r#set_timestamp(self, value)
3579    }
3580
3581    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3582    pub fn r#get_timestamp(
3583        &self,
3584    ) -> fidl::client::QueryResponseFut<
3585        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
3586        fidl::encoding::DefaultFuchsiaResourceDialect,
3587    > {
3588        SocketProxyInterface::r#get_timestamp(self)
3589    }
3590
3591    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3592    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3593    /// mark can be set independently in each domain.
3594    pub fn r#set_mark(
3595        &self,
3596        mut domain: fidl_fuchsia_net::MarkDomain,
3597        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
3598    ) -> fidl::client::QueryResponseFut<
3599        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
3600        fidl::encoding::DefaultFuchsiaResourceDialect,
3601    > {
3602        SocketProxyInterface::r#set_mark(self, domain, mark)
3603    }
3604
3605    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3606    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3607    /// mark can be retrieved independently in each domain.
3608    pub fn r#get_mark(
3609        &self,
3610        mut domain: fidl_fuchsia_net::MarkDomain,
3611    ) -> fidl::client::QueryResponseFut<
3612        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
3613        fidl::encoding::DefaultFuchsiaResourceDialect,
3614    > {
3615        SocketProxyInterface::r#get_mark(self, domain)
3616    }
3617
3618    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
3619    pub fn r#get_cookie(
3620        &self,
3621    ) -> fidl::client::QueryResponseFut<
3622        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
3623        fidl::encoding::DefaultFuchsiaResourceDialect,
3624    > {
3625        SocketProxyInterface::r#get_cookie(self)
3626    }
3627
3628    /// Sets the local address used for the socket.
3629    pub fn r#bind(
3630        &self,
3631        mut addr: &fidl_fuchsia_net::SocketAddress,
3632    ) -> fidl::client::QueryResponseFut<
3633        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
3634        fidl::encoding::DefaultFuchsiaResourceDialect,
3635    > {
3636        SocketProxyInterface::r#bind(self, addr)
3637    }
3638
3639    /// Initiates a connection to a remote address.
3640    pub fn r#connect(
3641        &self,
3642        mut addr: &fidl_fuchsia_net::SocketAddress,
3643    ) -> fidl::client::QueryResponseFut<
3644        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
3645        fidl::encoding::DefaultFuchsiaResourceDialect,
3646    > {
3647        SocketProxyInterface::r#connect(self, addr)
3648    }
3649
3650    /// Clears connection information from this socket.
3651    pub fn r#disconnect(
3652        &self,
3653    ) -> fidl::client::QueryResponseFut<
3654        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
3655        fidl::encoding::DefaultFuchsiaResourceDialect,
3656    > {
3657        SocketProxyInterface::r#disconnect(self)
3658    }
3659
3660    /// Retrieves the local socket address.
3661    pub fn r#get_sock_name(
3662        &self,
3663    ) -> fidl::client::QueryResponseFut<
3664        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
3665        fidl::encoding::DefaultFuchsiaResourceDialect,
3666    > {
3667        SocketProxyInterface::r#get_sock_name(self)
3668    }
3669
3670    /// Retrieves the remote socket address.
3671    pub fn r#get_peer_name(
3672        &self,
3673    ) -> fidl::client::QueryResponseFut<
3674        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
3675        fidl::encoding::DefaultFuchsiaResourceDialect,
3676    > {
3677        SocketProxyInterface::r#get_peer_name(self)
3678    }
3679
3680    /// Shuts down part of the socket.
3681    pub fn r#shutdown(
3682        &self,
3683        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
3684    ) -> fidl::client::QueryResponseFut<
3685        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
3686        fidl::encoding::DefaultFuchsiaResourceDialect,
3687    > {
3688        SocketProxyInterface::r#shutdown(self, mode)
3689    }
3690
3691    /// Set `SOL_IP` -> `IP_TOS`.
3692    pub fn r#set_ip_type_of_service(
3693        &self,
3694        mut value: u8,
3695    ) -> fidl::client::QueryResponseFut<
3696        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
3697        fidl::encoding::DefaultFuchsiaResourceDialect,
3698    > {
3699        SocketProxyInterface::r#set_ip_type_of_service(self, value)
3700    }
3701
3702    /// Get `SOL_IP` -> `IP_TOS`.
3703    pub fn r#get_ip_type_of_service(
3704        &self,
3705    ) -> fidl::client::QueryResponseFut<
3706        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
3707        fidl::encoding::DefaultFuchsiaResourceDialect,
3708    > {
3709        SocketProxyInterface::r#get_ip_type_of_service(self)
3710    }
3711
3712    /// Set `SOL_IP` -> `IP_TTL`.
3713    pub fn r#set_ip_ttl(
3714        &self,
3715        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3716    ) -> fidl::client::QueryResponseFut<
3717        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
3718        fidl::encoding::DefaultFuchsiaResourceDialect,
3719    > {
3720        SocketProxyInterface::r#set_ip_ttl(self, value)
3721    }
3722
3723    /// Get `SOL_IP` -> `IP_TTL`.
3724    pub fn r#get_ip_ttl(
3725        &self,
3726    ) -> fidl::client::QueryResponseFut<
3727        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
3728        fidl::encoding::DefaultFuchsiaResourceDialect,
3729    > {
3730        SocketProxyInterface::r#get_ip_ttl(self)
3731    }
3732
3733    /// Set `SOL_IP` -> `IP_PKTINFO`.
3734    pub fn r#set_ip_packet_info(
3735        &self,
3736        mut value: bool,
3737    ) -> fidl::client::QueryResponseFut<
3738        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
3739        fidl::encoding::DefaultFuchsiaResourceDialect,
3740    > {
3741        SocketProxyInterface::r#set_ip_packet_info(self, value)
3742    }
3743
3744    /// Get `SOL_IP` -> `IP_PKTINFO`.
3745    pub fn r#get_ip_packet_info(
3746        &self,
3747    ) -> fidl::client::QueryResponseFut<
3748        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
3749        fidl::encoding::DefaultFuchsiaResourceDialect,
3750    > {
3751        SocketProxyInterface::r#get_ip_packet_info(self)
3752    }
3753
3754    /// Set `SOL_IP` -> `IP_RECVTOS`.
3755    pub fn r#set_ip_receive_type_of_service(
3756        &self,
3757        mut value: bool,
3758    ) -> fidl::client::QueryResponseFut<
3759        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
3760        fidl::encoding::DefaultFuchsiaResourceDialect,
3761    > {
3762        SocketProxyInterface::r#set_ip_receive_type_of_service(self, value)
3763    }
3764
3765    /// Get `SOL_IP` -> `IP_RECVTOS`.
3766    pub fn r#get_ip_receive_type_of_service(
3767        &self,
3768    ) -> fidl::client::QueryResponseFut<
3769        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
3770        fidl::encoding::DefaultFuchsiaResourceDialect,
3771    > {
3772        SocketProxyInterface::r#get_ip_receive_type_of_service(self)
3773    }
3774
3775    /// Set `SOL_IP` -> `IP_RECVTTL`.
3776    pub fn r#set_ip_receive_ttl(
3777        &self,
3778        mut value: bool,
3779    ) -> fidl::client::QueryResponseFut<
3780        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
3781        fidl::encoding::DefaultFuchsiaResourceDialect,
3782    > {
3783        SocketProxyInterface::r#set_ip_receive_ttl(self, value)
3784    }
3785
3786    /// Get `SOL_IP` -> `IP_RECVTTL`.
3787    pub fn r#get_ip_receive_ttl(
3788        &self,
3789    ) -> fidl::client::QueryResponseFut<
3790        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
3791        fidl::encoding::DefaultFuchsiaResourceDialect,
3792    > {
3793        SocketProxyInterface::r#get_ip_receive_ttl(self)
3794    }
3795
3796    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
3797    pub fn r#set_ip_multicast_interface(
3798        &self,
3799        mut iface: u64,
3800        mut address: &fidl_fuchsia_net::Ipv4Address,
3801    ) -> fidl::client::QueryResponseFut<
3802        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
3803        fidl::encoding::DefaultFuchsiaResourceDialect,
3804    > {
3805        SocketProxyInterface::r#set_ip_multicast_interface(self, iface, address)
3806    }
3807
3808    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
3809    pub fn r#get_ip_multicast_interface(
3810        &self,
3811    ) -> fidl::client::QueryResponseFut<
3812        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
3813        fidl::encoding::DefaultFuchsiaResourceDialect,
3814    > {
3815        SocketProxyInterface::r#get_ip_multicast_interface(self)
3816    }
3817
3818    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
3819    pub fn r#set_ip_multicast_ttl(
3820        &self,
3821        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3822    ) -> fidl::client::QueryResponseFut<
3823        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
3824        fidl::encoding::DefaultFuchsiaResourceDialect,
3825    > {
3826        SocketProxyInterface::r#set_ip_multicast_ttl(self, value)
3827    }
3828
3829    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
3830    pub fn r#get_ip_multicast_ttl(
3831        &self,
3832    ) -> fidl::client::QueryResponseFut<
3833        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
3834        fidl::encoding::DefaultFuchsiaResourceDialect,
3835    > {
3836        SocketProxyInterface::r#get_ip_multicast_ttl(self)
3837    }
3838
3839    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
3840    pub fn r#set_ip_multicast_loopback(
3841        &self,
3842        mut value: bool,
3843    ) -> fidl::client::QueryResponseFut<
3844        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
3845        fidl::encoding::DefaultFuchsiaResourceDialect,
3846    > {
3847        SocketProxyInterface::r#set_ip_multicast_loopback(self, value)
3848    }
3849
3850    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
3851    pub fn r#get_ip_multicast_loopback(
3852        &self,
3853    ) -> fidl::client::QueryResponseFut<
3854        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
3855        fidl::encoding::DefaultFuchsiaResourceDialect,
3856    > {
3857        SocketProxyInterface::r#get_ip_multicast_loopback(self)
3858    }
3859
3860    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
3861    pub fn r#add_ip_membership(
3862        &self,
3863        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3864    ) -> fidl::client::QueryResponseFut<
3865        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
3866        fidl::encoding::DefaultFuchsiaResourceDialect,
3867    > {
3868        SocketProxyInterface::r#add_ip_membership(self, membership)
3869    }
3870
3871    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
3872    pub fn r#drop_ip_membership(
3873        &self,
3874        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3875    ) -> fidl::client::QueryResponseFut<
3876        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
3877        fidl::encoding::DefaultFuchsiaResourceDialect,
3878    > {
3879        SocketProxyInterface::r#drop_ip_membership(self, membership)
3880    }
3881
3882    /// Set `SOL_IP` -> `IP_TRANSPARENT`
3883    pub fn r#set_ip_transparent(
3884        &self,
3885        mut value: bool,
3886    ) -> fidl::client::QueryResponseFut<
3887        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
3888        fidl::encoding::DefaultFuchsiaResourceDialect,
3889    > {
3890        SocketProxyInterface::r#set_ip_transparent(self, value)
3891    }
3892
3893    /// Get `SOL_IP` -> `IP_TRANSPARENT`
3894    pub fn r#get_ip_transparent(
3895        &self,
3896    ) -> fidl::client::QueryResponseFut<
3897        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
3898        fidl::encoding::DefaultFuchsiaResourceDialect,
3899    > {
3900        SocketProxyInterface::r#get_ip_transparent(self)
3901    }
3902
3903    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
3904    pub fn r#set_ip_receive_original_destination_address(
3905        &self,
3906        mut value: bool,
3907    ) -> fidl::client::QueryResponseFut<
3908        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
3909        fidl::encoding::DefaultFuchsiaResourceDialect,
3910    > {
3911        SocketProxyInterface::r#set_ip_receive_original_destination_address(self, value)
3912    }
3913
3914    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
3915    pub fn r#get_ip_receive_original_destination_address(
3916        &self,
3917    ) -> fidl::client::QueryResponseFut<
3918        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
3919        fidl::encoding::DefaultFuchsiaResourceDialect,
3920    > {
3921        SocketProxyInterface::r#get_ip_receive_original_destination_address(self)
3922    }
3923
3924    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
3925    pub fn r#add_ipv6_membership(
3926        &self,
3927        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3928    ) -> fidl::client::QueryResponseFut<
3929        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
3930        fidl::encoding::DefaultFuchsiaResourceDialect,
3931    > {
3932        SocketProxyInterface::r#add_ipv6_membership(self, membership)
3933    }
3934
3935    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
3936    pub fn r#drop_ipv6_membership(
3937        &self,
3938        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3939    ) -> fidl::client::QueryResponseFut<
3940        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
3941        fidl::encoding::DefaultFuchsiaResourceDialect,
3942    > {
3943        SocketProxyInterface::r#drop_ipv6_membership(self, membership)
3944    }
3945
3946    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3947    pub fn r#set_ipv6_multicast_interface(
3948        &self,
3949        mut value: u64,
3950    ) -> fidl::client::QueryResponseFut<
3951        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
3952        fidl::encoding::DefaultFuchsiaResourceDialect,
3953    > {
3954        SocketProxyInterface::r#set_ipv6_multicast_interface(self, value)
3955    }
3956
3957    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3958    pub fn r#get_ipv6_multicast_interface(
3959        &self,
3960    ) -> fidl::client::QueryResponseFut<
3961        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
3962        fidl::encoding::DefaultFuchsiaResourceDialect,
3963    > {
3964        SocketProxyInterface::r#get_ipv6_multicast_interface(self)
3965    }
3966
3967    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3968    pub fn r#set_ipv6_unicast_hops(
3969        &self,
3970        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3971    ) -> fidl::client::QueryResponseFut<
3972        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
3973        fidl::encoding::DefaultFuchsiaResourceDialect,
3974    > {
3975        SocketProxyInterface::r#set_ipv6_unicast_hops(self, value)
3976    }
3977
3978    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3979    pub fn r#get_ipv6_unicast_hops(
3980        &self,
3981    ) -> fidl::client::QueryResponseFut<
3982        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
3983        fidl::encoding::DefaultFuchsiaResourceDialect,
3984    > {
3985        SocketProxyInterface::r#get_ipv6_unicast_hops(self)
3986    }
3987
3988    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3989    pub fn r#set_ipv6_receive_hop_limit(
3990        &self,
3991        mut value: bool,
3992    ) -> fidl::client::QueryResponseFut<
3993        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
3994        fidl::encoding::DefaultFuchsiaResourceDialect,
3995    > {
3996        SocketProxyInterface::r#set_ipv6_receive_hop_limit(self, value)
3997    }
3998
3999    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
4000    pub fn r#get_ipv6_receive_hop_limit(
4001        &self,
4002    ) -> fidl::client::QueryResponseFut<
4003        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
4004        fidl::encoding::DefaultFuchsiaResourceDialect,
4005    > {
4006        SocketProxyInterface::r#get_ipv6_receive_hop_limit(self)
4007    }
4008
4009    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
4010    pub fn r#set_ipv6_multicast_hops(
4011        &self,
4012        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
4013    ) -> fidl::client::QueryResponseFut<
4014        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
4015        fidl::encoding::DefaultFuchsiaResourceDialect,
4016    > {
4017        SocketProxyInterface::r#set_ipv6_multicast_hops(self, value)
4018    }
4019
4020    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
4021    pub fn r#get_ipv6_multicast_hops(
4022        &self,
4023    ) -> fidl::client::QueryResponseFut<
4024        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
4025        fidl::encoding::DefaultFuchsiaResourceDialect,
4026    > {
4027        SocketProxyInterface::r#get_ipv6_multicast_hops(self)
4028    }
4029
4030    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
4031    pub fn r#set_ipv6_multicast_loopback(
4032        &self,
4033        mut value: bool,
4034    ) -> fidl::client::QueryResponseFut<
4035        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
4036        fidl::encoding::DefaultFuchsiaResourceDialect,
4037    > {
4038        SocketProxyInterface::r#set_ipv6_multicast_loopback(self, value)
4039    }
4040
4041    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
4042    pub fn r#get_ipv6_multicast_loopback(
4043        &self,
4044    ) -> fidl::client::QueryResponseFut<
4045        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
4046        fidl::encoding::DefaultFuchsiaResourceDialect,
4047    > {
4048        SocketProxyInterface::r#get_ipv6_multicast_loopback(self)
4049    }
4050
4051    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
4052    pub fn r#set_ipv6_only(
4053        &self,
4054        mut value: bool,
4055    ) -> fidl::client::QueryResponseFut<
4056        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
4057        fidl::encoding::DefaultFuchsiaResourceDialect,
4058    > {
4059        SocketProxyInterface::r#set_ipv6_only(self, value)
4060    }
4061
4062    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
4063    pub fn r#get_ipv6_only(
4064        &self,
4065    ) -> fidl::client::QueryResponseFut<
4066        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
4067        fidl::encoding::DefaultFuchsiaResourceDialect,
4068    > {
4069        SocketProxyInterface::r#get_ipv6_only(self)
4070    }
4071
4072    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
4073    pub fn r#set_ipv6_receive_traffic_class(
4074        &self,
4075        mut value: bool,
4076    ) -> fidl::client::QueryResponseFut<
4077        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
4078        fidl::encoding::DefaultFuchsiaResourceDialect,
4079    > {
4080        SocketProxyInterface::r#set_ipv6_receive_traffic_class(self, value)
4081    }
4082
4083    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
4084    pub fn r#get_ipv6_receive_traffic_class(
4085        &self,
4086    ) -> fidl::client::QueryResponseFut<
4087        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
4088        fidl::encoding::DefaultFuchsiaResourceDialect,
4089    > {
4090        SocketProxyInterface::r#get_ipv6_receive_traffic_class(self)
4091    }
4092
4093    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
4094    pub fn r#set_ipv6_traffic_class(
4095        &self,
4096        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
4097    ) -> fidl::client::QueryResponseFut<
4098        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
4099        fidl::encoding::DefaultFuchsiaResourceDialect,
4100    > {
4101        SocketProxyInterface::r#set_ipv6_traffic_class(self, value)
4102    }
4103
4104    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
4105    pub fn r#get_ipv6_traffic_class(
4106        &self,
4107    ) -> fidl::client::QueryResponseFut<
4108        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
4109        fidl::encoding::DefaultFuchsiaResourceDialect,
4110    > {
4111        SocketProxyInterface::r#get_ipv6_traffic_class(self)
4112    }
4113
4114    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4115    pub fn r#set_ipv6_receive_packet_info(
4116        &self,
4117        mut value: bool,
4118    ) -> fidl::client::QueryResponseFut<
4119        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
4120        fidl::encoding::DefaultFuchsiaResourceDialect,
4121    > {
4122        SocketProxyInterface::r#set_ipv6_receive_packet_info(self, value)
4123    }
4124
4125    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4126    pub fn r#get_ipv6_receive_packet_info(
4127        &self,
4128    ) -> fidl::client::QueryResponseFut<
4129        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
4130        fidl::encoding::DefaultFuchsiaResourceDialect,
4131    > {
4132        SocketProxyInterface::r#get_ipv6_receive_packet_info(self)
4133    }
4134
4135    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
4136    pub fn r#get_original_destination(
4137        &self,
4138    ) -> fidl::client::QueryResponseFut<
4139        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
4140        fidl::encoding::DefaultFuchsiaResourceDialect,
4141    > {
4142        SocketProxyInterface::r#get_original_destination(self)
4143    }
4144
4145    pub fn r#describe(
4146        &self,
4147    ) -> fidl::client::QueryResponseFut<
4148        SocketDescribeResponse,
4149        fidl::encoding::DefaultFuchsiaResourceDialect,
4150    > {
4151        SocketProxyInterface::r#describe(self)
4152    }
4153
4154    /// Receives a message from the socket.
4155    ///
4156    /// + request `want_addr` request message's source address information to
4157    ///   be returned.
4158    /// + request `data_len` the maximum allowed length of the response data
4159    ///   buffer.
4160    /// + request `want_control` request ancillary data to be returned.
4161    /// + request `flags` flags for the receive request.
4162    /// - response `addr` the message's source address information, if
4163    ///   requested.
4164    /// - response `data` the message.
4165    /// - response `control` control messages, if requested.
4166    /// - response `truncated` indicates whether or not the returned message
4167    ///   was truncated.
4168    pub fn r#recv_msg(
4169        &self,
4170        mut want_addr: bool,
4171        mut data_len: u32,
4172        mut want_control: bool,
4173        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
4174    ) -> fidl::client::QueryResponseFut<
4175        SocketRecvMsgResult,
4176        fidl::encoding::DefaultFuchsiaResourceDialect,
4177    > {
4178        SocketProxyInterface::r#recv_msg(self, want_addr, data_len, want_control, flags)
4179    }
4180
4181    /// Sends a message on the socket.
4182    ///
4183    /// + request `addr` the address to send the message to. If unset, will
4184    ///   send to the connected peer.
4185    /// + request `data` the message.
4186    /// + request `control` ancillary data.
4187    /// + request `flags` flags for the send request.
4188    pub fn r#send_msg(
4189        &self,
4190        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
4191        mut data: &[u8],
4192        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
4193        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
4194    ) -> fidl::client::QueryResponseFut<
4195        SocketSendMsgResult,
4196        fidl::encoding::DefaultFuchsiaResourceDialect,
4197    > {
4198        SocketProxyInterface::r#send_msg(self, addr, data, control, flags)
4199    }
4200
4201    /// Retrieves creation information from the socket.
4202    ///
4203    /// - response `domain` the socket's associated domain.
4204    /// - response `proto` the socket's associated protocol.
4205    pub fn r#get_info(
4206        &self,
4207    ) -> fidl::client::QueryResponseFut<
4208        SocketGetInfoResult,
4209        fidl::encoding::DefaultFuchsiaResourceDialect,
4210    > {
4211        SocketProxyInterface::r#get_info(self)
4212    }
4213
4214    /// Set `SOL_IP` -> `IP_HDRINCL`.
4215    pub fn r#set_ip_header_included(
4216        &self,
4217        mut value: bool,
4218    ) -> fidl::client::QueryResponseFut<
4219        SocketSetIpHeaderIncludedResult,
4220        fidl::encoding::DefaultFuchsiaResourceDialect,
4221    > {
4222        SocketProxyInterface::r#set_ip_header_included(self, value)
4223    }
4224
4225    /// Get `SOL_IP` -> `IP_HDRINCL`.
4226    pub fn r#get_ip_header_included(
4227        &self,
4228    ) -> fidl::client::QueryResponseFut<
4229        SocketGetIpHeaderIncludedResult,
4230        fidl::encoding::DefaultFuchsiaResourceDialect,
4231    > {
4232        SocketProxyInterface::r#get_ip_header_included(self)
4233    }
4234
4235    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
4236    pub fn r#set_icmpv6_filter(
4237        &self,
4238        mut filter: &Icmpv6Filter,
4239    ) -> fidl::client::QueryResponseFut<
4240        SocketSetIcmpv6FilterResult,
4241        fidl::encoding::DefaultFuchsiaResourceDialect,
4242    > {
4243        SocketProxyInterface::r#set_icmpv6_filter(self, filter)
4244    }
4245
4246    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
4247    pub fn r#get_icmpv6_filter(
4248        &self,
4249    ) -> fidl::client::QueryResponseFut<
4250        SocketGetIcmpv6FilterResult,
4251        fidl::encoding::DefaultFuchsiaResourceDialect,
4252    > {
4253        SocketProxyInterface::r#get_icmpv6_filter(self)
4254    }
4255
4256    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
4257    pub fn r#set_ipv6_checksum(
4258        &self,
4259        mut config: &Ipv6ChecksumConfiguration,
4260    ) -> fidl::client::QueryResponseFut<
4261        SocketSetIpv6ChecksumResult,
4262        fidl::encoding::DefaultFuchsiaResourceDialect,
4263    > {
4264        SocketProxyInterface::r#set_ipv6_checksum(self, config)
4265    }
4266
4267    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
4268    pub fn r#get_ipv6_checksum(
4269        &self,
4270    ) -> fidl::client::QueryResponseFut<
4271        SocketGetIpv6ChecksumResult,
4272        fidl::encoding::DefaultFuchsiaResourceDialect,
4273    > {
4274        SocketProxyInterface::r#get_ipv6_checksum(self)
4275    }
4276}
4277
4278impl SocketProxyInterface for SocketProxy {
4279    fn r#clone(
4280        &self,
4281        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
4282    ) -> Result<(), fidl::Error> {
4283        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
4284            (request,),
4285            0x20d8a7aba2168a79,
4286            fidl::encoding::DynamicFlags::empty(),
4287        )
4288    }
4289
4290    type CloseResponseFut = fidl::client::QueryResponseFut<
4291        fidl_fuchsia_unknown::CloseableCloseResult,
4292        fidl::encoding::DefaultFuchsiaResourceDialect,
4293    >;
4294    fn r#close(&self) -> Self::CloseResponseFut {
4295        fn _decode(
4296            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4297        ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
4298            let _response = fidl::client::decode_transaction_body::<
4299                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
4300                fidl::encoding::DefaultFuchsiaResourceDialect,
4301                0x5ac5d459ad7f657e,
4302            >(_buf?)?;
4303            Ok(_response.map(|x| x))
4304        }
4305        self.client.send_query_and_decode::<
4306            fidl::encoding::EmptyPayload,
4307            fidl_fuchsia_unknown::CloseableCloseResult,
4308        >(
4309            (),
4310            0x5ac5d459ad7f657e,
4311            fidl::encoding::DynamicFlags::empty(),
4312            _decode,
4313        )
4314    }
4315
4316    type QueryResponseFut =
4317        fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
4318    fn r#query(&self) -> Self::QueryResponseFut {
4319        fn _decode(
4320            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4321        ) -> Result<Vec<u8>, fidl::Error> {
4322            let _response = fidl::client::decode_transaction_body::<
4323                fidl_fuchsia_unknown::QueryableQueryResponse,
4324                fidl::encoding::DefaultFuchsiaResourceDialect,
4325                0x2658edee9decfc06,
4326            >(_buf?)?;
4327            Ok(_response.protocol)
4328        }
4329        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<u8>>(
4330            (),
4331            0x2658edee9decfc06,
4332            fidl::encoding::DynamicFlags::empty(),
4333            _decode,
4334        )
4335    }
4336
4337    type SetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4338        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4339        fidl::encoding::DefaultFuchsiaResourceDialect,
4340    >;
4341    fn r#set_reuse_address(&self, mut value: bool) -> Self::SetReuseAddressResponseFut {
4342        fn _decode(
4343            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4344        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error>
4345        {
4346            let _response = fidl::client::decode_transaction_body::<
4347                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4348                fidl::encoding::DefaultFuchsiaResourceDialect,
4349                0x1fd74ee8b9a4a876,
4350            >(_buf?)?;
4351            Ok(_response.map(|x| x))
4352        }
4353        self.client.send_query_and_decode::<
4354            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
4355            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4356        >(
4357            (value,),
4358            0x1fd74ee8b9a4a876,
4359            fidl::encoding::DynamicFlags::empty(),
4360            _decode,
4361        )
4362    }
4363
4364    type GetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4365        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4366        fidl::encoding::DefaultFuchsiaResourceDialect,
4367    >;
4368    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut {
4369        fn _decode(
4370            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4371        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error>
4372        {
4373            let _response = fidl::client::decode_transaction_body::<
4374                fidl::encoding::ResultType<
4375                    fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
4376                    fidl_fuchsia_posix::Errno,
4377                >,
4378                fidl::encoding::DefaultFuchsiaResourceDialect,
4379                0x67b7206b8d1bc0a5,
4380            >(_buf?)?;
4381            Ok(_response.map(|x| x.value))
4382        }
4383        self.client.send_query_and_decode::<
4384            fidl::encoding::EmptyPayload,
4385            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4386        >(
4387            (),
4388            0x67b7206b8d1bc0a5,
4389            fidl::encoding::DynamicFlags::empty(),
4390            _decode,
4391        )
4392    }
4393
4394    type GetErrorResponseFut = fidl::client::QueryResponseFut<
4395        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4396        fidl::encoding::DefaultFuchsiaResourceDialect,
4397    >;
4398    fn r#get_error(&self) -> Self::GetErrorResponseFut {
4399        fn _decode(
4400            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4401        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
4402            let _response = fidl::client::decode_transaction_body::<
4403                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4404                fidl::encoding::DefaultFuchsiaResourceDialect,
4405                0x5aad39b33e5f6ebb,
4406            >(_buf?)?;
4407            Ok(_response.map(|x| x))
4408        }
4409        self.client.send_query_and_decode::<
4410            fidl::encoding::EmptyPayload,
4411            fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4412        >(
4413            (),
4414            0x5aad39b33e5f6ebb,
4415            fidl::encoding::DynamicFlags::empty(),
4416            _decode,
4417        )
4418    }
4419
4420    type SetBroadcastResponseFut = fidl::client::QueryResponseFut<
4421        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4422        fidl::encoding::DefaultFuchsiaResourceDialect,
4423    >;
4424    fn r#set_broadcast(&self, mut value: bool) -> Self::SetBroadcastResponseFut {
4425        fn _decode(
4426            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4427        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
4428            let _response = fidl::client::decode_transaction_body::<
4429                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4430                fidl::encoding::DefaultFuchsiaResourceDialect,
4431                0x6023e081ce3cd947,
4432            >(_buf?)?;
4433            Ok(_response.map(|x| x))
4434        }
4435        self.client.send_query_and_decode::<
4436            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
4437            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4438        >(
4439            (value,),
4440            0x6023e081ce3cd947,
4441            fidl::encoding::DynamicFlags::empty(),
4442            _decode,
4443        )
4444    }
4445
4446    type GetBroadcastResponseFut = fidl::client::QueryResponseFut<
4447        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4448        fidl::encoding::DefaultFuchsiaResourceDialect,
4449    >;
4450    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut {
4451        fn _decode(
4452            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4453        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
4454            let _response = fidl::client::decode_transaction_body::<
4455                fidl::encoding::ResultType<
4456                    fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
4457                    fidl_fuchsia_posix::Errno,
4458                >,
4459                fidl::encoding::DefaultFuchsiaResourceDialect,
4460                0x68796fc556f9780d,
4461            >(_buf?)?;
4462            Ok(_response.map(|x| x.value))
4463        }
4464        self.client.send_query_and_decode::<
4465            fidl::encoding::EmptyPayload,
4466            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4467        >(
4468            (),
4469            0x68796fc556f9780d,
4470            fidl::encoding::DynamicFlags::empty(),
4471            _decode,
4472        )
4473    }
4474
4475    type SetSendBufferResponseFut = fidl::client::QueryResponseFut<
4476        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4477        fidl::encoding::DefaultFuchsiaResourceDialect,
4478    >;
4479    fn r#set_send_buffer(&self, mut value_bytes: u64) -> Self::SetSendBufferResponseFut {
4480        fn _decode(
4481            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4482        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
4483            let _response = fidl::client::decode_transaction_body::<
4484                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4485                fidl::encoding::DefaultFuchsiaResourceDialect,
4486                0x756eac32d73a7a70,
4487            >(_buf?)?;
4488            Ok(_response.map(|x| x))
4489        }
4490        self.client.send_query_and_decode::<
4491            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
4492            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4493        >(
4494            (value_bytes,),
4495            0x756eac32d73a7a70,
4496            fidl::encoding::DynamicFlags::empty(),
4497            _decode,
4498        )
4499    }
4500
4501    type GetSendBufferResponseFut = fidl::client::QueryResponseFut<
4502        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4503        fidl::encoding::DefaultFuchsiaResourceDialect,
4504    >;
4505    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut {
4506        fn _decode(
4507            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4508        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
4509            let _response = fidl::client::decode_transaction_body::<
4510                fidl::encoding::ResultType<
4511                    fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
4512                    fidl_fuchsia_posix::Errno,
4513                >,
4514                fidl::encoding::DefaultFuchsiaResourceDialect,
4515                0x78a52fd9c7b2410b,
4516            >(_buf?)?;
4517            Ok(_response.map(|x| x.value_bytes))
4518        }
4519        self.client.send_query_and_decode::<
4520            fidl::encoding::EmptyPayload,
4521            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4522        >(
4523            (),
4524            0x78a52fd9c7b2410b,
4525            fidl::encoding::DynamicFlags::empty(),
4526            _decode,
4527        )
4528    }
4529
4530    type SetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4531        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4532        fidl::encoding::DefaultFuchsiaResourceDialect,
4533    >;
4534    fn r#set_receive_buffer(&self, mut value_bytes: u64) -> Self::SetReceiveBufferResponseFut {
4535        fn _decode(
4536            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4537        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error>
4538        {
4539            let _response = fidl::client::decode_transaction_body::<
4540                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4541                fidl::encoding::DefaultFuchsiaResourceDialect,
4542                0x6b0cf2f1919c7001,
4543            >(_buf?)?;
4544            Ok(_response.map(|x| x))
4545        }
4546        self.client.send_query_and_decode::<
4547            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
4548            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4549        >(
4550            (value_bytes,),
4551            0x6b0cf2f1919c7001,
4552            fidl::encoding::DynamicFlags::empty(),
4553            _decode,
4554        )
4555    }
4556
4557    type GetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4558        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4559        fidl::encoding::DefaultFuchsiaResourceDialect,
4560    >;
4561    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut {
4562        fn _decode(
4563            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4564        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error>
4565        {
4566            let _response = fidl::client::decode_transaction_body::<
4567                fidl::encoding::ResultType<
4568                    fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
4569                    fidl_fuchsia_posix::Errno,
4570                >,
4571                fidl::encoding::DefaultFuchsiaResourceDialect,
4572                0x14c1a4b64f709e5c,
4573            >(_buf?)?;
4574            Ok(_response.map(|x| x.value_bytes))
4575        }
4576        self.client.send_query_and_decode::<
4577            fidl::encoding::EmptyPayload,
4578            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4579        >(
4580            (),
4581            0x14c1a4b64f709e5c,
4582            fidl::encoding::DynamicFlags::empty(),
4583            _decode,
4584        )
4585    }
4586
4587    type SetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4588        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4589        fidl::encoding::DefaultFuchsiaResourceDialect,
4590    >;
4591    fn r#set_keep_alive(&self, mut value: bool) -> Self::SetKeepAliveResponseFut {
4592        fn _decode(
4593            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4594        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
4595            let _response = fidl::client::decode_transaction_body::<
4596                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4597                fidl::encoding::DefaultFuchsiaResourceDialect,
4598                0x572df8f0b920d2c7,
4599            >(_buf?)?;
4600            Ok(_response.map(|x| x))
4601        }
4602        self.client.send_query_and_decode::<
4603            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
4604            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4605        >(
4606            (value,),
4607            0x572df8f0b920d2c7,
4608            fidl::encoding::DynamicFlags::empty(),
4609            _decode,
4610        )
4611    }
4612
4613    type GetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4614        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4615        fidl::encoding::DefaultFuchsiaResourceDialect,
4616    >;
4617    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut {
4618        fn _decode(
4619            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4620        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
4621            let _response = fidl::client::decode_transaction_body::<
4622                fidl::encoding::ResultType<
4623                    fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
4624                    fidl_fuchsia_posix::Errno,
4625                >,
4626                fidl::encoding::DefaultFuchsiaResourceDialect,
4627                0x2dd29d3215f2c9d2,
4628            >(_buf?)?;
4629            Ok(_response.map(|x| x.value))
4630        }
4631        self.client.send_query_and_decode::<
4632            fidl::encoding::EmptyPayload,
4633            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4634        >(
4635            (),
4636            0x2dd29d3215f2c9d2,
4637            fidl::encoding::DynamicFlags::empty(),
4638            _decode,
4639        )
4640    }
4641
4642    type SetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4643        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4644        fidl::encoding::DefaultFuchsiaResourceDialect,
4645    >;
4646    fn r#set_out_of_band_inline(&self, mut value: bool) -> Self::SetOutOfBandInlineResponseFut {
4647        fn _decode(
4648            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4649        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error>
4650        {
4651            let _response = fidl::client::decode_transaction_body::<
4652                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4653                fidl::encoding::DefaultFuchsiaResourceDialect,
4654                0x3ecb49968bee439,
4655            >(_buf?)?;
4656            Ok(_response.map(|x| x))
4657        }
4658        self.client.send_query_and_decode::<
4659            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
4660            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4661        >(
4662            (value,),
4663            0x3ecb49968bee439,
4664            fidl::encoding::DynamicFlags::empty(),
4665            _decode,
4666        )
4667    }
4668
4669    type GetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4670        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4671        fidl::encoding::DefaultFuchsiaResourceDialect,
4672    >;
4673    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut {
4674        fn _decode(
4675            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4676        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error>
4677        {
4678            let _response = fidl::client::decode_transaction_body::<
4679                fidl::encoding::ResultType<
4680                    fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
4681                    fidl_fuchsia_posix::Errno,
4682                >,
4683                fidl::encoding::DefaultFuchsiaResourceDialect,
4684                0x348c1ab3aeca1745,
4685            >(_buf?)?;
4686            Ok(_response.map(|x| x.value))
4687        }
4688        self.client.send_query_and_decode::<
4689            fidl::encoding::EmptyPayload,
4690            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4691        >(
4692            (),
4693            0x348c1ab3aeca1745,
4694            fidl::encoding::DynamicFlags::empty(),
4695            _decode,
4696        )
4697    }
4698
4699    type SetNoCheckResponseFut = fidl::client::QueryResponseFut<
4700        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4701        fidl::encoding::DefaultFuchsiaResourceDialect,
4702    >;
4703    fn r#set_no_check(&self, mut value: bool) -> Self::SetNoCheckResponseFut {
4704        fn _decode(
4705            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4706        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
4707            let _response = fidl::client::decode_transaction_body::<
4708                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4709                fidl::encoding::DefaultFuchsiaResourceDialect,
4710                0x6bbf00c53a4c78c2,
4711            >(_buf?)?;
4712            Ok(_response.map(|x| x))
4713        }
4714        self.client.send_query_and_decode::<
4715            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
4716            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4717        >(
4718            (value,),
4719            0x6bbf00c53a4c78c2,
4720            fidl::encoding::DynamicFlags::empty(),
4721            _decode,
4722        )
4723    }
4724
4725    type GetNoCheckResponseFut = fidl::client::QueryResponseFut<
4726        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4727        fidl::encoding::DefaultFuchsiaResourceDialect,
4728    >;
4729    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut {
4730        fn _decode(
4731            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4732        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
4733            let _response = fidl::client::decode_transaction_body::<
4734                fidl::encoding::ResultType<
4735                    fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
4736                    fidl_fuchsia_posix::Errno,
4737                >,
4738                fidl::encoding::DefaultFuchsiaResourceDialect,
4739                0x2cd4249286417694,
4740            >(_buf?)?;
4741            Ok(_response.map(|x| x.value))
4742        }
4743        self.client.send_query_and_decode::<
4744            fidl::encoding::EmptyPayload,
4745            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4746        >(
4747            (),
4748            0x2cd4249286417694,
4749            fidl::encoding::DynamicFlags::empty(),
4750            _decode,
4751        )
4752    }
4753
4754    type SetLingerResponseFut = fidl::client::QueryResponseFut<
4755        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4756        fidl::encoding::DefaultFuchsiaResourceDialect,
4757    >;
4758    fn r#set_linger(&self, mut linger: bool, mut length_secs: u32) -> Self::SetLingerResponseFut {
4759        fn _decode(
4760            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4761        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
4762            let _response = fidl::client::decode_transaction_body::<
4763                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4764                fidl::encoding::DefaultFuchsiaResourceDialect,
4765                0x45386351246e998e,
4766            >(_buf?)?;
4767            Ok(_response.map(|x| x))
4768        }
4769        self.client.send_query_and_decode::<
4770            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
4771            fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4772        >(
4773            (linger, length_secs,),
4774            0x45386351246e998e,
4775            fidl::encoding::DynamicFlags::empty(),
4776            _decode,
4777        )
4778    }
4779
4780    type GetLingerResponseFut = fidl::client::QueryResponseFut<
4781        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4782        fidl::encoding::DefaultFuchsiaResourceDialect,
4783    >;
4784    fn r#get_linger(&self) -> Self::GetLingerResponseFut {
4785        fn _decode(
4786            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4787        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
4788            let _response = fidl::client::decode_transaction_body::<
4789                fidl::encoding::ResultType<
4790                    fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
4791                    fidl_fuchsia_posix::Errno,
4792                >,
4793                fidl::encoding::DefaultFuchsiaResourceDialect,
4794                0x48eb20fc5ccb0e45,
4795            >(_buf?)?;
4796            Ok(_response.map(|x| (x.linger, x.length_secs)))
4797        }
4798        self.client.send_query_and_decode::<
4799            fidl::encoding::EmptyPayload,
4800            fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4801        >(
4802            (),
4803            0x48eb20fc5ccb0e45,
4804            fidl::encoding::DynamicFlags::empty(),
4805            _decode,
4806        )
4807    }
4808
4809    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4810        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4811        fidl::encoding::DefaultFuchsiaResourceDialect,
4812    >;
4813    fn r#set_reuse_port(
4814        &self,
4815        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
4816    ) -> Self::SetReusePortResponseFut {
4817        fn _decode(
4818            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4819        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4820            let _response = fidl::client::decode_transaction_body::<
4821                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4822                fidl::encoding::DefaultFuchsiaResourceDialect,
4823                0x547dc9cc0455189e,
4824            >(_buf?)?;
4825            Ok(_response.map(|x| x))
4826        }
4827        self.client.send_query_and_decode::<
4828            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4829            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4830        >(
4831            (&mut value,),
4832            0x547dc9cc0455189e,
4833            fidl::encoding::DynamicFlags::empty(),
4834            _decode,
4835        )
4836    }
4837
4838    type SetReusePortDeprecatedResponseFut = fidl::client::QueryResponseFut<
4839        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4840        fidl::encoding::DefaultFuchsiaResourceDialect,
4841    >;
4842    fn r#set_reuse_port_deprecated(
4843        &self,
4844        mut value: bool,
4845    ) -> Self::SetReusePortDeprecatedResponseFut {
4846        fn _decode(
4847            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4848        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
4849        {
4850            let _response = fidl::client::decode_transaction_body::<
4851                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4852                fidl::encoding::DefaultFuchsiaResourceDialect,
4853                0x24dd3e5cb36d9ccb,
4854            >(_buf?)?;
4855            Ok(_response.map(|x| x))
4856        }
4857        self.client.send_query_and_decode::<
4858            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
4859            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4860        >(
4861            (value,),
4862            0x24dd3e5cb36d9ccb,
4863            fidl::encoding::DynamicFlags::empty(),
4864            _decode,
4865        )
4866    }
4867
4868    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4869        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4870        fidl::encoding::DefaultFuchsiaResourceDialect,
4871    >;
4872    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4873        fn _decode(
4874            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4875        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4876            let _response = fidl::client::decode_transaction_body::<
4877                fidl::encoding::ResultType<
4878                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4879                    fidl_fuchsia_posix::Errno,
4880                >,
4881                fidl::encoding::DefaultFuchsiaResourceDialect,
4882                0x7a112c1ab54ff828,
4883            >(_buf?)?;
4884            Ok(_response.map(|x| x.value))
4885        }
4886        self.client.send_query_and_decode::<
4887            fidl::encoding::EmptyPayload,
4888            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4889        >(
4890            (),
4891            0x7a112c1ab54ff828,
4892            fidl::encoding::DynamicFlags::empty(),
4893            _decode,
4894        )
4895    }
4896
4897    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4898        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4899        fidl::encoding::DefaultFuchsiaResourceDialect,
4900    >;
4901    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4902        fn _decode(
4903            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4904        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4905            let _response = fidl::client::decode_transaction_body::<
4906                fidl::encoding::ResultType<
4907                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4908                    fidl_fuchsia_posix::Errno,
4909                >,
4910                fidl::encoding::DefaultFuchsiaResourceDialect,
4911                0x67ce6db6c2ec8966,
4912            >(_buf?)?;
4913            Ok(_response.map(|x| x.value))
4914        }
4915        self.client.send_query_and_decode::<
4916            fidl::encoding::EmptyPayload,
4917            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4918        >(
4919            (),
4920            0x67ce6db6c2ec8966,
4921            fidl::encoding::DynamicFlags::empty(),
4922            _decode,
4923        )
4924    }
4925
4926    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4927        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4928        fidl::encoding::DefaultFuchsiaResourceDialect,
4929    >;
4930    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4931        fn _decode(
4932            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4933        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4934        {
4935            let _response = fidl::client::decode_transaction_body::<
4936                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4937                fidl::encoding::DefaultFuchsiaResourceDialect,
4938                0x2118b483f28aafc4,
4939            >(_buf?)?;
4940            Ok(_response.map(|x| x))
4941        }
4942        self.client.send_query_and_decode::<
4943            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4944            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4945        >(
4946            (value,),
4947            0x2118b483f28aafc4,
4948            fidl::encoding::DynamicFlags::empty(),
4949            _decode,
4950        )
4951    }
4952
4953    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4954        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4955        fidl::encoding::DefaultFuchsiaResourceDialect,
4956    >;
4957    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4958        fn _decode(
4959            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4960        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4961        {
4962            let _response = fidl::client::decode_transaction_body::<
4963                fidl::encoding::ResultType<
4964                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4965                    fidl_fuchsia_posix::Errno,
4966                >,
4967                fidl::encoding::DefaultFuchsiaResourceDialect,
4968                0x1ab1fbf0ef7906c8,
4969            >(_buf?)?;
4970            Ok(_response.map(|x| x.value))
4971        }
4972        self.client.send_query_and_decode::<
4973            fidl::encoding::EmptyPayload,
4974            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4975        >(
4976            (),
4977            0x1ab1fbf0ef7906c8,
4978            fidl::encoding::DynamicFlags::empty(),
4979            _decode,
4980        )
4981    }
4982
4983    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4984        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4985        fidl::encoding::DefaultFuchsiaResourceDialect,
4986    >;
4987    fn r#set_bind_to_interface_index(
4988        &self,
4989        mut value: u64,
4990    ) -> Self::SetBindToInterfaceIndexResponseFut {
4991        fn _decode(
4992            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4993        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
4994        {
4995            let _response = fidl::client::decode_transaction_body::<
4996                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4997                fidl::encoding::DefaultFuchsiaResourceDialect,
4998                0x6e387a0def00821,
4999            >(_buf?)?;
5000            Ok(_response.map(|x| x))
5001        }
5002        self.client.send_query_and_decode::<
5003            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
5004            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
5005        >(
5006            (value,),
5007            0x6e387a0def00821,
5008            fidl::encoding::DynamicFlags::empty(),
5009            _decode,
5010        )
5011    }
5012
5013    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
5014        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
5015        fidl::encoding::DefaultFuchsiaResourceDialect,
5016    >;
5017    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
5018        fn _decode(
5019            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5020        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
5021        {
5022            let _response = fidl::client::decode_transaction_body::<
5023                fidl::encoding::ResultType<
5024                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
5025                    fidl_fuchsia_posix::Errno,
5026                >,
5027                fidl::encoding::DefaultFuchsiaResourceDialect,
5028                0x59c31dd3e3078295,
5029            >(_buf?)?;
5030            Ok(_response.map(|x| x.value))
5031        }
5032        self.client.send_query_and_decode::<
5033            fidl::encoding::EmptyPayload,
5034            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
5035        >(
5036            (),
5037            0x59c31dd3e3078295,
5038            fidl::encoding::DynamicFlags::empty(),
5039            _decode,
5040        )
5041    }
5042
5043    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
5044        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
5045        fidl::encoding::DefaultFuchsiaResourceDialect,
5046    >;
5047    fn r#set_timestamp(
5048        &self,
5049        mut value: fidl_fuchsia_posix_socket::TimestampOption,
5050    ) -> Self::SetTimestampResponseFut {
5051        fn _decode(
5052            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5053        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
5054            let _response = fidl::client::decode_transaction_body::<
5055                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5056                fidl::encoding::DefaultFuchsiaResourceDialect,
5057                0x285d6516c263d839,
5058            >(_buf?)?;
5059            Ok(_response.map(|x| x))
5060        }
5061        self.client.send_query_and_decode::<
5062            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
5063            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
5064        >(
5065            (value,),
5066            0x285d6516c263d839,
5067            fidl::encoding::DynamicFlags::empty(),
5068            _decode,
5069        )
5070    }
5071
5072    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
5073        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
5074        fidl::encoding::DefaultFuchsiaResourceDialect,
5075    >;
5076    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
5077        fn _decode(
5078            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5079        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
5080            let _response = fidl::client::decode_transaction_body::<
5081                fidl::encoding::ResultType<
5082                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
5083                    fidl_fuchsia_posix::Errno,
5084                >,
5085                fidl::encoding::DefaultFuchsiaResourceDialect,
5086                0x49f2fffbbcc2bd27,
5087            >(_buf?)?;
5088            Ok(_response.map(|x| x.value))
5089        }
5090        self.client.send_query_and_decode::<
5091            fidl::encoding::EmptyPayload,
5092            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
5093        >(
5094            (),
5095            0x49f2fffbbcc2bd27,
5096            fidl::encoding::DynamicFlags::empty(),
5097            _decode,
5098        )
5099    }
5100
5101    type SetMarkResponseFut = fidl::client::QueryResponseFut<
5102        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5103        fidl::encoding::DefaultFuchsiaResourceDialect,
5104    >;
5105    fn r#set_mark(
5106        &self,
5107        mut domain: fidl_fuchsia_net::MarkDomain,
5108        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
5109    ) -> Self::SetMarkResponseFut {
5110        fn _decode(
5111            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5112        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
5113            let _response = fidl::client::decode_transaction_body::<
5114                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5115                fidl::encoding::DefaultFuchsiaResourceDialect,
5116                0x6ead6de09f653236,
5117            >(_buf?)?;
5118            Ok(_response.map(|x| x))
5119        }
5120        self.client.send_query_and_decode::<
5121            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
5122            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5123        >(
5124            (domain, mark,),
5125            0x6ead6de09f653236,
5126            fidl::encoding::DynamicFlags::empty(),
5127            _decode,
5128        )
5129    }
5130
5131    type GetMarkResponseFut = fidl::client::QueryResponseFut<
5132        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5133        fidl::encoding::DefaultFuchsiaResourceDialect,
5134    >;
5135    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
5136        fn _decode(
5137            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5138        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
5139            let _response = fidl::client::decode_transaction_body::<
5140                fidl::encoding::ResultType<
5141                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
5142                    fidl_fuchsia_posix::Errno,
5143                >,
5144                fidl::encoding::DefaultFuchsiaResourceDialect,
5145                0x57a2752c61d93d47,
5146            >(_buf?)?;
5147            Ok(_response.map(|x| x.mark))
5148        }
5149        self.client.send_query_and_decode::<
5150            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
5151            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5152        >(
5153            (domain,),
5154            0x57a2752c61d93d47,
5155            fidl::encoding::DynamicFlags::empty(),
5156            _decode,
5157        )
5158    }
5159
5160    type GetCookieResponseFut = fidl::client::QueryResponseFut<
5161        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5162        fidl::encoding::DefaultFuchsiaResourceDialect,
5163    >;
5164    fn r#get_cookie(&self) -> Self::GetCookieResponseFut {
5165        fn _decode(
5166            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5167        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
5168            let _response = fidl::client::decode_transaction_body::<
5169                fidl::encoding::ResultType<
5170                    fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
5171                    fidl_fuchsia_posix::Errno,
5172                >,
5173                fidl::encoding::DefaultFuchsiaResourceDialect,
5174                0x2c2f47fd8f924e52,
5175            >(_buf?)?;
5176            Ok(_response.map(|x| x.value))
5177        }
5178        self.client.send_query_and_decode::<
5179            fidl::encoding::EmptyPayload,
5180            fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5181        >(
5182            (),
5183            0x2c2f47fd8f924e52,
5184            fidl::encoding::DynamicFlags::empty(),
5185            _decode,
5186        )
5187    }
5188
5189    type BindResponseFut = fidl::client::QueryResponseFut<
5190        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5191        fidl::encoding::DefaultFuchsiaResourceDialect,
5192    >;
5193    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5194        fn _decode(
5195            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5196        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5197            let _response = fidl::client::decode_transaction_body::<
5198                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5199                fidl::encoding::DefaultFuchsiaResourceDialect,
5200                0x4bc6400ae92125d,
5201            >(_buf?)?;
5202            Ok(_response.map(|x| x))
5203        }
5204        self.client.send_query_and_decode::<
5205            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5206            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5207        >(
5208            (addr,),
5209            0x4bc6400ae92125d,
5210            fidl::encoding::DynamicFlags::empty(),
5211            _decode,
5212        )
5213    }
5214
5215    type ConnectResponseFut = fidl::client::QueryResponseFut<
5216        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5217        fidl::encoding::DefaultFuchsiaResourceDialect,
5218    >;
5219    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5220        fn _decode(
5221            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5222        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5223        {
5224            let _response = fidl::client::decode_transaction_body::<
5225                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5226                fidl::encoding::DefaultFuchsiaResourceDialect,
5227                0x5f05f19bfdd38871,
5228            >(_buf?)?;
5229            Ok(_response.map(|x| x))
5230        }
5231        self.client.send_query_and_decode::<
5232            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5233            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5234        >(
5235            (addr,),
5236            0x5f05f19bfdd38871,
5237            fidl::encoding::DynamicFlags::empty(),
5238            _decode,
5239        )
5240    }
5241
5242    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5243        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5244        fidl::encoding::DefaultFuchsiaResourceDialect,
5245    >;
5246    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5247        fn _decode(
5248            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5249        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5250        {
5251            let _response = fidl::client::decode_transaction_body::<
5252                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5253                fidl::encoding::DefaultFuchsiaResourceDialect,
5254                0x74e63b91f7b29b2,
5255            >(_buf?)?;
5256            Ok(_response.map(|x| x))
5257        }
5258        self.client.send_query_and_decode::<
5259            fidl::encoding::EmptyPayload,
5260            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5261        >(
5262            (),
5263            0x74e63b91f7b29b2,
5264            fidl::encoding::DynamicFlags::empty(),
5265            _decode,
5266        )
5267    }
5268
5269    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5270        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5271        fidl::encoding::DefaultFuchsiaResourceDialect,
5272    >;
5273    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5274        fn _decode(
5275            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5276        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5277        {
5278            let _response = fidl::client::decode_transaction_body::<
5279                fidl::encoding::ResultType<
5280                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5281                    fidl_fuchsia_posix::Errno,
5282                >,
5283                fidl::encoding::DefaultFuchsiaResourceDialect,
5284                0x475f23f84a1a4f85,
5285            >(_buf?)?;
5286            Ok(_response.map(|x| x.addr))
5287        }
5288        self.client.send_query_and_decode::<
5289            fidl::encoding::EmptyPayload,
5290            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5291        >(
5292            (),
5293            0x475f23f84a1a4f85,
5294            fidl::encoding::DynamicFlags::empty(),
5295            _decode,
5296        )
5297    }
5298
5299    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5300        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5301        fidl::encoding::DefaultFuchsiaResourceDialect,
5302    >;
5303    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5304        fn _decode(
5305            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5306        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5307        {
5308            let _response = fidl::client::decode_transaction_body::<
5309                fidl::encoding::ResultType<
5310                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5311                    fidl_fuchsia_posix::Errno,
5312                >,
5313                fidl::encoding::DefaultFuchsiaResourceDialect,
5314                0x1ffecf4bd5b6432e,
5315            >(_buf?)?;
5316            Ok(_response.map(|x| x.addr))
5317        }
5318        self.client.send_query_and_decode::<
5319            fidl::encoding::EmptyPayload,
5320            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5321        >(
5322            (),
5323            0x1ffecf4bd5b6432e,
5324            fidl::encoding::DynamicFlags::empty(),
5325            _decode,
5326        )
5327    }
5328
5329    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5330        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5331        fidl::encoding::DefaultFuchsiaResourceDialect,
5332    >;
5333    fn r#shutdown(
5334        &self,
5335        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5336    ) -> Self::ShutdownResponseFut {
5337        fn _decode(
5338            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5339        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5340        {
5341            let _response = fidl::client::decode_transaction_body::<
5342                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5343                fidl::encoding::DefaultFuchsiaResourceDialect,
5344                0x247f38b6db68c336,
5345            >(_buf?)?;
5346            Ok(_response.map(|x| x))
5347        }
5348        self.client.send_query_and_decode::<
5349            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5350            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5351        >(
5352            (mode,),
5353            0x247f38b6db68c336,
5354            fidl::encoding::DynamicFlags::empty(),
5355            _decode,
5356        )
5357    }
5358
5359    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5360        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5361        fidl::encoding::DefaultFuchsiaResourceDialect,
5362    >;
5363    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5364        fn _decode(
5365            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5366        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5367        {
5368            let _response = fidl::client::decode_transaction_body::<
5369                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5370                fidl::encoding::DefaultFuchsiaResourceDialect,
5371                0x995c600475b6d46,
5372            >(_buf?)?;
5373            Ok(_response.map(|x| x))
5374        }
5375        self.client.send_query_and_decode::<
5376            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5377            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5378        >(
5379            (value,),
5380            0x995c600475b6d46,
5381            fidl::encoding::DynamicFlags::empty(),
5382            _decode,
5383        )
5384    }
5385
5386    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5387        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5388        fidl::encoding::DefaultFuchsiaResourceDialect,
5389    >;
5390    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5391        fn _decode(
5392            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5393        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5394        {
5395            let _response = fidl::client::decode_transaction_body::<
5396                fidl::encoding::ResultType<
5397                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5398                    fidl_fuchsia_posix::Errno,
5399                >,
5400                fidl::encoding::DefaultFuchsiaResourceDialect,
5401                0x3814a04259f75fcb,
5402            >(_buf?)?;
5403            Ok(_response.map(|x| x.value))
5404        }
5405        self.client.send_query_and_decode::<
5406            fidl::encoding::EmptyPayload,
5407            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5408        >(
5409            (),
5410            0x3814a04259f75fcb,
5411            fidl::encoding::DynamicFlags::empty(),
5412            _decode,
5413        )
5414    }
5415
5416    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5417        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5418        fidl::encoding::DefaultFuchsiaResourceDialect,
5419    >;
5420    fn r#set_ip_ttl(
5421        &self,
5422        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5423    ) -> Self::SetIpTtlResponseFut {
5424        fn _decode(
5425            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5426        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5427        {
5428            let _response = fidl::client::decode_transaction_body::<
5429                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5430                fidl::encoding::DefaultFuchsiaResourceDialect,
5431                0x29e2424b433ae1ef,
5432            >(_buf?)?;
5433            Ok(_response.map(|x| x))
5434        }
5435        self.client.send_query_and_decode::<
5436            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5437            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5438        >(
5439            (value,),
5440            0x29e2424b433ae1ef,
5441            fidl::encoding::DynamicFlags::empty(),
5442            _decode,
5443        )
5444    }
5445
5446    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5447        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5448        fidl::encoding::DefaultFuchsiaResourceDialect,
5449    >;
5450    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5451        fn _decode(
5452            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5453        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5454        {
5455            let _response = fidl::client::decode_transaction_body::<
5456                fidl::encoding::ResultType<
5457                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5458                    fidl_fuchsia_posix::Errno,
5459                >,
5460                fidl::encoding::DefaultFuchsiaResourceDialect,
5461                0x47e47fa1f24da471,
5462            >(_buf?)?;
5463            Ok(_response.map(|x| x.value))
5464        }
5465        self.client.send_query_and_decode::<
5466            fidl::encoding::EmptyPayload,
5467            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5468        >(
5469            (),
5470            0x47e47fa1f24da471,
5471            fidl::encoding::DynamicFlags::empty(),
5472            _decode,
5473        )
5474    }
5475
5476    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5477        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5478        fidl::encoding::DefaultFuchsiaResourceDialect,
5479    >;
5480    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5481        fn _decode(
5482            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5483        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5484        {
5485            let _response = fidl::client::decode_transaction_body::<
5486                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5487                fidl::encoding::DefaultFuchsiaResourceDialect,
5488                0x392d16bee20c0e16,
5489            >(_buf?)?;
5490            Ok(_response.map(|x| x))
5491        }
5492        self.client.send_query_and_decode::<
5493            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5494            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5495        >(
5496            (value,),
5497            0x392d16bee20c0e16,
5498            fidl::encoding::DynamicFlags::empty(),
5499            _decode,
5500        )
5501    }
5502
5503    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5504        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5505        fidl::encoding::DefaultFuchsiaResourceDialect,
5506    >;
5507    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5508        fn _decode(
5509            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5510        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5511        {
5512            let _response = fidl::client::decode_transaction_body::<
5513                fidl::encoding::ResultType<
5514                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5515                    fidl_fuchsia_posix::Errno,
5516                >,
5517                fidl::encoding::DefaultFuchsiaResourceDialect,
5518                0x54b505f242280740,
5519            >(_buf?)?;
5520            Ok(_response.map(|x| x.value))
5521        }
5522        self.client.send_query_and_decode::<
5523            fidl::encoding::EmptyPayload,
5524            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5525        >(
5526            (),
5527            0x54b505f242280740,
5528            fidl::encoding::DynamicFlags::empty(),
5529            _decode,
5530        )
5531    }
5532
5533    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5534        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5535        fidl::encoding::DefaultFuchsiaResourceDialect,
5536    >;
5537    fn r#set_ip_receive_type_of_service(
5538        &self,
5539        mut value: bool,
5540    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5541        fn _decode(
5542            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5543        ) -> Result<
5544            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5545            fidl::Error,
5546        > {
5547            let _response = fidl::client::decode_transaction_body::<
5548                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5549                fidl::encoding::DefaultFuchsiaResourceDialect,
5550                0x6c4f6714995f84ef,
5551            >(_buf?)?;
5552            Ok(_response.map(|x| x))
5553        }
5554        self.client.send_query_and_decode::<
5555            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5556            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5557        >(
5558            (value,),
5559            0x6c4f6714995f84ef,
5560            fidl::encoding::DynamicFlags::empty(),
5561            _decode,
5562        )
5563    }
5564
5565    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5566        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5567        fidl::encoding::DefaultFuchsiaResourceDialect,
5568    >;
5569    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5570        fn _decode(
5571            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5572        ) -> Result<
5573            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5574            fidl::Error,
5575        > {
5576            let _response = fidl::client::decode_transaction_body::<
5577                fidl::encoding::ResultType<
5578                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5579                    fidl_fuchsia_posix::Errno,
5580                >,
5581                fidl::encoding::DefaultFuchsiaResourceDialect,
5582                0x4158ba7dc2795960,
5583            >(_buf?)?;
5584            Ok(_response.map(|x| x.value))
5585        }
5586        self.client.send_query_and_decode::<
5587            fidl::encoding::EmptyPayload,
5588            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5589        >(
5590            (),
5591            0x4158ba7dc2795960,
5592            fidl::encoding::DynamicFlags::empty(),
5593            _decode,
5594        )
5595    }
5596
5597    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5598        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5599        fidl::encoding::DefaultFuchsiaResourceDialect,
5600    >;
5601    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5602        fn _decode(
5603            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5604        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5605        {
5606            let _response = fidl::client::decode_transaction_body::<
5607                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5608                fidl::encoding::DefaultFuchsiaResourceDialect,
5609                0x46f15be0ce0ab82b,
5610            >(_buf?)?;
5611            Ok(_response.map(|x| x))
5612        }
5613        self.client.send_query_and_decode::<
5614            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5615            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5616        >(
5617            (value,),
5618            0x46f15be0ce0ab82b,
5619            fidl::encoding::DynamicFlags::empty(),
5620            _decode,
5621        )
5622    }
5623
5624    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5625        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5626        fidl::encoding::DefaultFuchsiaResourceDialect,
5627    >;
5628    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5629        fn _decode(
5630            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5631        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5632        {
5633            let _response = fidl::client::decode_transaction_body::<
5634                fidl::encoding::ResultType<
5635                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5636                    fidl_fuchsia_posix::Errno,
5637                >,
5638                fidl::encoding::DefaultFuchsiaResourceDialect,
5639                0x678ddd5a5dfa2eb5,
5640            >(_buf?)?;
5641            Ok(_response.map(|x| x.value))
5642        }
5643        self.client.send_query_and_decode::<
5644            fidl::encoding::EmptyPayload,
5645            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5646        >(
5647            (),
5648            0x678ddd5a5dfa2eb5,
5649            fidl::encoding::DynamicFlags::empty(),
5650            _decode,
5651        )
5652    }
5653
5654    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5655        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5656        fidl::encoding::DefaultFuchsiaResourceDialect,
5657    >;
5658    fn r#set_ip_multicast_interface(
5659        &self,
5660        mut iface: u64,
5661        mut address: &fidl_fuchsia_net::Ipv4Address,
5662    ) -> Self::SetIpMulticastInterfaceResponseFut {
5663        fn _decode(
5664            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5665        ) -> Result<
5666            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5667            fidl::Error,
5668        > {
5669            let _response = fidl::client::decode_transaction_body::<
5670                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5671                fidl::encoding::DefaultFuchsiaResourceDialect,
5672                0x752fbfa9b12befe,
5673            >(_buf?)?;
5674            Ok(_response.map(|x| x))
5675        }
5676        self.client.send_query_and_decode::<
5677            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5678            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5679        >(
5680            (iface, address,),
5681            0x752fbfa9b12befe,
5682            fidl::encoding::DynamicFlags::empty(),
5683            _decode,
5684        )
5685    }
5686
5687    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5688        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5689        fidl::encoding::DefaultFuchsiaResourceDialect,
5690    >;
5691    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5692        fn _decode(
5693            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5694        ) -> Result<
5695            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5696            fidl::Error,
5697        > {
5698            let _response = fidl::client::decode_transaction_body::<
5699                fidl::encoding::ResultType<
5700                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5701                    fidl_fuchsia_posix::Errno,
5702                >,
5703                fidl::encoding::DefaultFuchsiaResourceDialect,
5704                0x320bd14c4df046c4,
5705            >(_buf?)?;
5706            Ok(_response.map(|x| x.value))
5707        }
5708        self.client.send_query_and_decode::<
5709            fidl::encoding::EmptyPayload,
5710            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5711        >(
5712            (),
5713            0x320bd14c4df046c4,
5714            fidl::encoding::DynamicFlags::empty(),
5715            _decode,
5716        )
5717    }
5718
5719    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5720        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5721        fidl::encoding::DefaultFuchsiaResourceDialect,
5722    >;
5723    fn r#set_ip_multicast_ttl(
5724        &self,
5725        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5726    ) -> Self::SetIpMulticastTtlResponseFut {
5727        fn _decode(
5728            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5729        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5730        {
5731            let _response = fidl::client::decode_transaction_body::<
5732                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5733                fidl::encoding::DefaultFuchsiaResourceDialect,
5734                0x63134d53772916a1,
5735            >(_buf?)?;
5736            Ok(_response.map(|x| x))
5737        }
5738        self.client.send_query_and_decode::<
5739            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5740            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5741        >(
5742            (value,),
5743            0x63134d53772916a1,
5744            fidl::encoding::DynamicFlags::empty(),
5745            _decode,
5746        )
5747    }
5748
5749    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5750        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5751        fidl::encoding::DefaultFuchsiaResourceDialect,
5752    >;
5753    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5754        fn _decode(
5755            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5756        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5757        {
5758            let _response = fidl::client::decode_transaction_body::<
5759                fidl::encoding::ResultType<
5760                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5761                    fidl_fuchsia_posix::Errno,
5762                >,
5763                fidl::encoding::DefaultFuchsiaResourceDialect,
5764                0x4665cd378f39e1a,
5765            >(_buf?)?;
5766            Ok(_response.map(|x| x.value))
5767        }
5768        self.client.send_query_and_decode::<
5769            fidl::encoding::EmptyPayload,
5770            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5771        >(
5772            (),
5773            0x4665cd378f39e1a,
5774            fidl::encoding::DynamicFlags::empty(),
5775            _decode,
5776        )
5777    }
5778
5779    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5780        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5781        fidl::encoding::DefaultFuchsiaResourceDialect,
5782    >;
5783    fn r#set_ip_multicast_loopback(
5784        &self,
5785        mut value: bool,
5786    ) -> Self::SetIpMulticastLoopbackResponseFut {
5787        fn _decode(
5788            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5789        ) -> Result<
5790            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5791            fidl::Error,
5792        > {
5793            let _response = fidl::client::decode_transaction_body::<
5794                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5795                fidl::encoding::DefaultFuchsiaResourceDialect,
5796                0x20c55c11f00943ea,
5797            >(_buf?)?;
5798            Ok(_response.map(|x| x))
5799        }
5800        self.client.send_query_and_decode::<
5801            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5802            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5803        >(
5804            (value,),
5805            0x20c55c11f00943ea,
5806            fidl::encoding::DynamicFlags::empty(),
5807            _decode,
5808        )
5809    }
5810
5811    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5812        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5813        fidl::encoding::DefaultFuchsiaResourceDialect,
5814    >;
5815    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5816        fn _decode(
5817            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5818        ) -> Result<
5819            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5820            fidl::Error,
5821        > {
5822            let _response = fidl::client::decode_transaction_body::<
5823                fidl::encoding::ResultType<
5824                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5825                    fidl_fuchsia_posix::Errno,
5826                >,
5827                fidl::encoding::DefaultFuchsiaResourceDialect,
5828                0x3b6b26ff558298f2,
5829            >(_buf?)?;
5830            Ok(_response.map(|x| x.value))
5831        }
5832        self.client.send_query_and_decode::<
5833            fidl::encoding::EmptyPayload,
5834            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5835        >(
5836            (),
5837            0x3b6b26ff558298f2,
5838            fidl::encoding::DynamicFlags::empty(),
5839            _decode,
5840        )
5841    }
5842
5843    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5844        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5845        fidl::encoding::DefaultFuchsiaResourceDialect,
5846    >;
5847    fn r#add_ip_membership(
5848        &self,
5849        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5850    ) -> Self::AddIpMembershipResponseFut {
5851        fn _decode(
5852            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5853        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5854        {
5855            let _response = fidl::client::decode_transaction_body::<
5856                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5857                fidl::encoding::DefaultFuchsiaResourceDialect,
5858                0x76bc7df115a3b4d0,
5859            >(_buf?)?;
5860            Ok(_response.map(|x| x))
5861        }
5862        self.client.send_query_and_decode::<
5863            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5864            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5865        >(
5866            (membership,),
5867            0x76bc7df115a3b4d0,
5868            fidl::encoding::DynamicFlags::empty(),
5869            _decode,
5870        )
5871    }
5872
5873    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5874        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5875        fidl::encoding::DefaultFuchsiaResourceDialect,
5876    >;
5877    fn r#drop_ip_membership(
5878        &self,
5879        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5880    ) -> Self::DropIpMembershipResponseFut {
5881        fn _decode(
5882            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5883        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5884        {
5885            let _response = fidl::client::decode_transaction_body::<
5886                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5887                fidl::encoding::DefaultFuchsiaResourceDialect,
5888                0x2888f3099188d03,
5889            >(_buf?)?;
5890            Ok(_response.map(|x| x))
5891        }
5892        self.client.send_query_and_decode::<
5893            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5894            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5895        >(
5896            (membership,),
5897            0x2888f3099188d03,
5898            fidl::encoding::DynamicFlags::empty(),
5899            _decode,
5900        )
5901    }
5902
5903    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5904        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5905        fidl::encoding::DefaultFuchsiaResourceDialect,
5906    >;
5907    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5908        fn _decode(
5909            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5910        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5911        {
5912            let _response = fidl::client::decode_transaction_body::<
5913                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5914                fidl::encoding::DefaultFuchsiaResourceDialect,
5915                0x1ae532b0c066e3a0,
5916            >(_buf?)?;
5917            Ok(_response.map(|x| x))
5918        }
5919        self.client.send_query_and_decode::<
5920            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5921            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5922        >(
5923            (value,),
5924            0x1ae532b0c066e3a0,
5925            fidl::encoding::DynamicFlags::empty(),
5926            _decode,
5927        )
5928    }
5929
5930    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5931        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5932        fidl::encoding::DefaultFuchsiaResourceDialect,
5933    >;
5934    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5935        fn _decode(
5936            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5937        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5938        {
5939            let _response = fidl::client::decode_transaction_body::<
5940                fidl::encoding::ResultType<
5941                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5942                    fidl_fuchsia_posix::Errno,
5943                >,
5944                fidl::encoding::DefaultFuchsiaResourceDialect,
5945                0x51d43695962ebfb5,
5946            >(_buf?)?;
5947            Ok(_response.map(|x| x.value))
5948        }
5949        self.client.send_query_and_decode::<
5950            fidl::encoding::EmptyPayload,
5951            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5952        >(
5953            (),
5954            0x51d43695962ebfb5,
5955            fidl::encoding::DynamicFlags::empty(),
5956            _decode,
5957        )
5958    }
5959
5960    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5961        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5962        fidl::encoding::DefaultFuchsiaResourceDialect,
5963    >;
5964    fn r#set_ip_receive_original_destination_address(
5965        &self,
5966        mut value: bool,
5967    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5968        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5969            let _response = fidl::client::decode_transaction_body::<
5970                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5971                fidl::encoding::DefaultFuchsiaResourceDialect,
5972                0x4722b4ce52f7840,
5973            >(_buf?)?;
5974            Ok(_response.map(|x| x))
5975        }
5976        self.client.send_query_and_decode::<
5977            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5978            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5979        >(
5980            (value,),
5981            0x4722b4ce52f7840,
5982            fidl::encoding::DynamicFlags::empty(),
5983            _decode,
5984        )
5985    }
5986
5987    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5988        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5989        fidl::encoding::DefaultFuchsiaResourceDialect,
5990    >;
5991    fn r#get_ip_receive_original_destination_address(
5992        &self,
5993    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
5994        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5995            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
5996            Ok(_response.map(|x| x.value))
5997        }
5998        self.client.send_query_and_decode::<
5999            fidl::encoding::EmptyPayload,
6000            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
6001        >(
6002            (),
6003            0x2a0e7dc5d6bfdfe9,
6004            fidl::encoding::DynamicFlags::empty(),
6005            _decode,
6006        )
6007    }
6008
6009    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
6010        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
6011        fidl::encoding::DefaultFuchsiaResourceDialect,
6012    >;
6013    fn r#add_ipv6_membership(
6014        &self,
6015        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
6016    ) -> Self::AddIpv6MembershipResponseFut {
6017        fn _decode(
6018            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6019        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
6020        {
6021            let _response = fidl::client::decode_transaction_body::<
6022                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6023                fidl::encoding::DefaultFuchsiaResourceDialect,
6024                0x7c94727acb4ea4b3,
6025            >(_buf?)?;
6026            Ok(_response.map(|x| x))
6027        }
6028        self.client.send_query_and_decode::<
6029            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
6030            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
6031        >(
6032            (membership,),
6033            0x7c94727acb4ea4b3,
6034            fidl::encoding::DynamicFlags::empty(),
6035            _decode,
6036        )
6037    }
6038
6039    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
6040        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
6041        fidl::encoding::DefaultFuchsiaResourceDialect,
6042    >;
6043    fn r#drop_ipv6_membership(
6044        &self,
6045        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
6046    ) -> Self::DropIpv6MembershipResponseFut {
6047        fn _decode(
6048            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6049        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
6050        {
6051            let _response = fidl::client::decode_transaction_body::<
6052                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6053                fidl::encoding::DefaultFuchsiaResourceDialect,
6054                0x42104c70ccaba304,
6055            >(_buf?)?;
6056            Ok(_response.map(|x| x))
6057        }
6058        self.client.send_query_and_decode::<
6059            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
6060            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
6061        >(
6062            (membership,),
6063            0x42104c70ccaba304,
6064            fidl::encoding::DynamicFlags::empty(),
6065            _decode,
6066        )
6067    }
6068
6069    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
6070        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
6071        fidl::encoding::DefaultFuchsiaResourceDialect,
6072    >;
6073    fn r#set_ipv6_multicast_interface(
6074        &self,
6075        mut value: u64,
6076    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
6077        fn _decode(
6078            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6079        ) -> Result<
6080            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
6081            fidl::Error,
6082        > {
6083            let _response = fidl::client::decode_transaction_body::<
6084                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6085                fidl::encoding::DefaultFuchsiaResourceDialect,
6086                0x135f76db3774ab3b,
6087            >(_buf?)?;
6088            Ok(_response.map(|x| x))
6089        }
6090        self.client.send_query_and_decode::<
6091            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
6092            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
6093        >(
6094            (value,),
6095            0x135f76db3774ab3b,
6096            fidl::encoding::DynamicFlags::empty(),
6097            _decode,
6098        )
6099    }
6100
6101    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
6102        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6103        fidl::encoding::DefaultFuchsiaResourceDialect,
6104    >;
6105    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
6106        fn _decode(
6107            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6108        ) -> Result<
6109            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6110            fidl::Error,
6111        > {
6112            let _response = fidl::client::decode_transaction_body::<
6113                fidl::encoding::ResultType<
6114                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
6115                    fidl_fuchsia_posix::Errno,
6116                >,
6117                fidl::encoding::DefaultFuchsiaResourceDialect,
6118                0x1f26fcdd348f1882,
6119            >(_buf?)?;
6120            Ok(_response.map(|x| x.value))
6121        }
6122        self.client.send_query_and_decode::<
6123            fidl::encoding::EmptyPayload,
6124            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6125        >(
6126            (),
6127            0x1f26fcdd348f1882,
6128            fidl::encoding::DynamicFlags::empty(),
6129            _decode,
6130        )
6131    }
6132
6133    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6134        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6135        fidl::encoding::DefaultFuchsiaResourceDialect,
6136    >;
6137    fn r#set_ipv6_unicast_hops(
6138        &self,
6139        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6140    ) -> Self::SetIpv6UnicastHopsResponseFut {
6141        fn _decode(
6142            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6143        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
6144        {
6145            let _response = fidl::client::decode_transaction_body::<
6146                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6147                fidl::encoding::DefaultFuchsiaResourceDialect,
6148                0x157d51e98f462859,
6149            >(_buf?)?;
6150            Ok(_response.map(|x| x))
6151        }
6152        self.client.send_query_and_decode::<
6153            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
6154            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6155        >(
6156            (value,),
6157            0x157d51e98f462859,
6158            fidl::encoding::DynamicFlags::empty(),
6159            _decode,
6160        )
6161    }
6162
6163    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6164        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6165        fidl::encoding::DefaultFuchsiaResourceDialect,
6166    >;
6167    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
6168        fn _decode(
6169            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6170        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
6171        {
6172            let _response = fidl::client::decode_transaction_body::<
6173                fidl::encoding::ResultType<
6174                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
6175                    fidl_fuchsia_posix::Errno,
6176                >,
6177                fidl::encoding::DefaultFuchsiaResourceDialect,
6178                0x21f4641cad8bd8d2,
6179            >(_buf?)?;
6180            Ok(_response.map(|x| x.value))
6181        }
6182        self.client.send_query_and_decode::<
6183            fidl::encoding::EmptyPayload,
6184            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6185        >(
6186            (),
6187            0x21f4641cad8bd8d2,
6188            fidl::encoding::DynamicFlags::empty(),
6189            _decode,
6190        )
6191    }
6192
6193    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6194        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6195        fidl::encoding::DefaultFuchsiaResourceDialect,
6196    >;
6197    fn r#set_ipv6_receive_hop_limit(
6198        &self,
6199        mut value: bool,
6200    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6201        fn _decode(
6202            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6203        ) -> Result<
6204            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6205            fidl::Error,
6206        > {
6207            let _response = fidl::client::decode_transaction_body::<
6208                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6209                fidl::encoding::DefaultFuchsiaResourceDialect,
6210                0x5c24808ed2e84a1e,
6211            >(_buf?)?;
6212            Ok(_response.map(|x| x))
6213        }
6214        self.client.send_query_and_decode::<
6215            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6216            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6217        >(
6218            (value,),
6219            0x5c24808ed2e84a1e,
6220            fidl::encoding::DynamicFlags::empty(),
6221            _decode,
6222        )
6223    }
6224
6225    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6226        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6227        fidl::encoding::DefaultFuchsiaResourceDialect,
6228    >;
6229    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6230        fn _decode(
6231            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6232        ) -> Result<
6233            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6234            fidl::Error,
6235        > {
6236            let _response = fidl::client::decode_transaction_body::<
6237                fidl::encoding::ResultType<
6238                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6239                    fidl_fuchsia_posix::Errno,
6240                >,
6241                fidl::encoding::DefaultFuchsiaResourceDialect,
6242                0x341e06689885b4c0,
6243            >(_buf?)?;
6244            Ok(_response.map(|x| x.value))
6245        }
6246        self.client.send_query_and_decode::<
6247            fidl::encoding::EmptyPayload,
6248            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6249        >(
6250            (),
6251            0x341e06689885b4c0,
6252            fidl::encoding::DynamicFlags::empty(),
6253            _decode,
6254        )
6255    }
6256
6257    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6258        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6259        fidl::encoding::DefaultFuchsiaResourceDialect,
6260    >;
6261    fn r#set_ipv6_multicast_hops(
6262        &self,
6263        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6264    ) -> Self::SetIpv6MulticastHopsResponseFut {
6265        fn _decode(
6266            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6267        ) -> Result<
6268            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6269            fidl::Error,
6270        > {
6271            let _response = fidl::client::decode_transaction_body::<
6272                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6273                fidl::encoding::DefaultFuchsiaResourceDialect,
6274                0x25b9cd4d181f82c1,
6275            >(_buf?)?;
6276            Ok(_response.map(|x| x))
6277        }
6278        self.client.send_query_and_decode::<
6279            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6280            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6281        >(
6282            (value,),
6283            0x25b9cd4d181f82c1,
6284            fidl::encoding::DynamicFlags::empty(),
6285            _decode,
6286        )
6287    }
6288
6289    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6290        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6291        fidl::encoding::DefaultFuchsiaResourceDialect,
6292    >;
6293    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6294        fn _decode(
6295            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6296        ) -> Result<
6297            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6298            fidl::Error,
6299        > {
6300            let _response = fidl::client::decode_transaction_body::<
6301                fidl::encoding::ResultType<
6302                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6303                    fidl_fuchsia_posix::Errno,
6304                >,
6305                fidl::encoding::DefaultFuchsiaResourceDialect,
6306                0x52916948a365012a,
6307            >(_buf?)?;
6308            Ok(_response.map(|x| x.value))
6309        }
6310        self.client.send_query_and_decode::<
6311            fidl::encoding::EmptyPayload,
6312            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6313        >(
6314            (),
6315            0x52916948a365012a,
6316            fidl::encoding::DynamicFlags::empty(),
6317            _decode,
6318        )
6319    }
6320
6321    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6322        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6323        fidl::encoding::DefaultFuchsiaResourceDialect,
6324    >;
6325    fn r#set_ipv6_multicast_loopback(
6326        &self,
6327        mut value: bool,
6328    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6329        fn _decode(
6330            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6331        ) -> Result<
6332            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6333            fidl::Error,
6334        > {
6335            let _response = fidl::client::decode_transaction_body::<
6336                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6337                fidl::encoding::DefaultFuchsiaResourceDialect,
6338                0x55701c409ff41b40,
6339            >(_buf?)?;
6340            Ok(_response.map(|x| x))
6341        }
6342        self.client.send_query_and_decode::<
6343            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6344            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6345        >(
6346            (value,),
6347            0x55701c409ff41b40,
6348            fidl::encoding::DynamicFlags::empty(),
6349            _decode,
6350        )
6351    }
6352
6353    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6354        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6355        fidl::encoding::DefaultFuchsiaResourceDialect,
6356    >;
6357    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6358        fn _decode(
6359            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6360        ) -> Result<
6361            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6362            fidl::Error,
6363        > {
6364            let _response = fidl::client::decode_transaction_body::<
6365                fidl::encoding::ResultType<
6366                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6367                    fidl_fuchsia_posix::Errno,
6368                >,
6369                fidl::encoding::DefaultFuchsiaResourceDialect,
6370                0x4415b701fde319c3,
6371            >(_buf?)?;
6372            Ok(_response.map(|x| x.value))
6373        }
6374        self.client.send_query_and_decode::<
6375            fidl::encoding::EmptyPayload,
6376            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6377        >(
6378            (),
6379            0x4415b701fde319c3,
6380            fidl::encoding::DynamicFlags::empty(),
6381            _decode,
6382        )
6383    }
6384
6385    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6386        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6387        fidl::encoding::DefaultFuchsiaResourceDialect,
6388    >;
6389    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6390        fn _decode(
6391            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6392        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error>
6393        {
6394            let _response = fidl::client::decode_transaction_body::<
6395                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6396                fidl::encoding::DefaultFuchsiaResourceDialect,
6397                0x4873f1364758cbba,
6398            >(_buf?)?;
6399            Ok(_response.map(|x| x))
6400        }
6401        self.client.send_query_and_decode::<
6402            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6403            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6404        >(
6405            (value,),
6406            0x4873f1364758cbba,
6407            fidl::encoding::DynamicFlags::empty(),
6408            _decode,
6409        )
6410    }
6411
6412    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6413        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6414        fidl::encoding::DefaultFuchsiaResourceDialect,
6415    >;
6416    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6417        fn _decode(
6418            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6419        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6420        {
6421            let _response = fidl::client::decode_transaction_body::<
6422                fidl::encoding::ResultType<
6423                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6424                    fidl_fuchsia_posix::Errno,
6425                >,
6426                fidl::encoding::DefaultFuchsiaResourceDialect,
6427                0x4aa3340a1a26b89c,
6428            >(_buf?)?;
6429            Ok(_response.map(|x| x.value))
6430        }
6431        self.client.send_query_and_decode::<
6432            fidl::encoding::EmptyPayload,
6433            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6434        >(
6435            (),
6436            0x4aa3340a1a26b89c,
6437            fidl::encoding::DynamicFlags::empty(),
6438            _decode,
6439        )
6440    }
6441
6442    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6443        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6444        fidl::encoding::DefaultFuchsiaResourceDialect,
6445    >;
6446    fn r#set_ipv6_receive_traffic_class(
6447        &self,
6448        mut value: bool,
6449    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6450        fn _decode(
6451            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6452        ) -> Result<
6453            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6454            fidl::Error,
6455        > {
6456            let _response = fidl::client::decode_transaction_body::<
6457                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6458                fidl::encoding::DefaultFuchsiaResourceDialect,
6459                0x58f07c8788d099a0,
6460            >(_buf?)?;
6461            Ok(_response.map(|x| x))
6462        }
6463        self.client.send_query_and_decode::<
6464            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6465            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6466        >(
6467            (value,),
6468            0x58f07c8788d099a0,
6469            fidl::encoding::DynamicFlags::empty(),
6470            _decode,
6471        )
6472    }
6473
6474    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6475        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6476        fidl::encoding::DefaultFuchsiaResourceDialect,
6477    >;
6478    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6479        fn _decode(
6480            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6481        ) -> Result<
6482            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6483            fidl::Error,
6484        > {
6485            let _response = fidl::client::decode_transaction_body::<
6486                fidl::encoding::ResultType<
6487                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6488                    fidl_fuchsia_posix::Errno,
6489                >,
6490                fidl::encoding::DefaultFuchsiaResourceDialect,
6491                0x2e334df1da553ffa,
6492            >(_buf?)?;
6493            Ok(_response.map(|x| x.value))
6494        }
6495        self.client.send_query_and_decode::<
6496            fidl::encoding::EmptyPayload,
6497            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6498        >(
6499            (),
6500            0x2e334df1da553ffa,
6501            fidl::encoding::DynamicFlags::empty(),
6502            _decode,
6503        )
6504    }
6505
6506    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6507        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6508        fidl::encoding::DefaultFuchsiaResourceDialect,
6509    >;
6510    fn r#set_ipv6_traffic_class(
6511        &self,
6512        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6513    ) -> Self::SetIpv6TrafficClassResponseFut {
6514        fn _decode(
6515            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6516        ) -> Result<
6517            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6518            fidl::Error,
6519        > {
6520            let _response = fidl::client::decode_transaction_body::<
6521                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6522                fidl::encoding::DefaultFuchsiaResourceDialect,
6523                0x6af077800c5a0b4f,
6524            >(_buf?)?;
6525            Ok(_response.map(|x| x))
6526        }
6527        self.client.send_query_and_decode::<
6528            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6529            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6530        >(
6531            (value,),
6532            0x6af077800c5a0b4f,
6533            fidl::encoding::DynamicFlags::empty(),
6534            _decode,
6535        )
6536    }
6537
6538    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6539        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6540        fidl::encoding::DefaultFuchsiaResourceDialect,
6541    >;
6542    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6543        fn _decode(
6544            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6545        ) -> Result<
6546            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6547            fidl::Error,
6548        > {
6549            let _response = fidl::client::decode_transaction_body::<
6550                fidl::encoding::ResultType<
6551                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6552                    fidl_fuchsia_posix::Errno,
6553                >,
6554                fidl::encoding::DefaultFuchsiaResourceDialect,
6555                0x6baf6eed8fc2f04,
6556            >(_buf?)?;
6557            Ok(_response.map(|x| x.value))
6558        }
6559        self.client.send_query_and_decode::<
6560            fidl::encoding::EmptyPayload,
6561            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6562        >(
6563            (),
6564            0x6baf6eed8fc2f04,
6565            fidl::encoding::DynamicFlags::empty(),
6566            _decode,
6567        )
6568    }
6569
6570    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6571        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6572        fidl::encoding::DefaultFuchsiaResourceDialect,
6573    >;
6574    fn r#set_ipv6_receive_packet_info(
6575        &self,
6576        mut value: bool,
6577    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6578        fn _decode(
6579            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6580        ) -> Result<
6581            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6582            fidl::Error,
6583        > {
6584            let _response = fidl::client::decode_transaction_body::<
6585                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6586                fidl::encoding::DefaultFuchsiaResourceDialect,
6587                0x19259775b1a92768,
6588            >(_buf?)?;
6589            Ok(_response.map(|x| x))
6590        }
6591        self.client.send_query_and_decode::<
6592            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6593            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6594        >(
6595            (value,),
6596            0x19259775b1a92768,
6597            fidl::encoding::DynamicFlags::empty(),
6598            _decode,
6599        )
6600    }
6601
6602    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6603        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6604        fidl::encoding::DefaultFuchsiaResourceDialect,
6605    >;
6606    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6607        fn _decode(
6608            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6609        ) -> Result<
6610            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6611            fidl::Error,
6612        > {
6613            let _response = fidl::client::decode_transaction_body::<
6614                fidl::encoding::ResultType<
6615                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6616                    fidl_fuchsia_posix::Errno,
6617                >,
6618                fidl::encoding::DefaultFuchsiaResourceDialect,
6619                0x7acd4a2775baec75,
6620            >(_buf?)?;
6621            Ok(_response.map(|x| x.value))
6622        }
6623        self.client.send_query_and_decode::<
6624            fidl::encoding::EmptyPayload,
6625            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6626        >(
6627            (),
6628            0x7acd4a2775baec75,
6629            fidl::encoding::DynamicFlags::empty(),
6630            _decode,
6631        )
6632    }
6633
6634    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6635        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6636        fidl::encoding::DefaultFuchsiaResourceDialect,
6637    >;
6638    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6639        fn _decode(
6640            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6641        ) -> Result<
6642            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6643            fidl::Error,
6644        > {
6645            let _response = fidl::client::decode_transaction_body::<
6646                fidl::encoding::ResultType<
6647                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6648                    fidl_fuchsia_posix::Errno,
6649                >,
6650                fidl::encoding::DefaultFuchsiaResourceDialect,
6651                0x38bf28f0dafdbac0,
6652            >(_buf?)?;
6653            Ok(_response.map(|x| x.value))
6654        }
6655        self.client.send_query_and_decode::<
6656            fidl::encoding::EmptyPayload,
6657            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6658        >(
6659            (),
6660            0x38bf28f0dafdbac0,
6661            fidl::encoding::DynamicFlags::empty(),
6662            _decode,
6663        )
6664    }
6665
6666    type DescribeResponseFut = fidl::client::QueryResponseFut<
6667        SocketDescribeResponse,
6668        fidl::encoding::DefaultFuchsiaResourceDialect,
6669    >;
6670    fn r#describe(&self) -> Self::DescribeResponseFut {
6671        fn _decode(
6672            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6673        ) -> Result<SocketDescribeResponse, fidl::Error> {
6674            let _response = fidl::client::decode_transaction_body::<
6675                SocketDescribeResponse,
6676                fidl::encoding::DefaultFuchsiaResourceDialect,
6677                0x335706eccf54a135,
6678            >(_buf?)?;
6679            Ok(_response)
6680        }
6681        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6682            (),
6683            0x335706eccf54a135,
6684            fidl::encoding::DynamicFlags::empty(),
6685            _decode,
6686        )
6687    }
6688
6689    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6690        SocketRecvMsgResult,
6691        fidl::encoding::DefaultFuchsiaResourceDialect,
6692    >;
6693    fn r#recv_msg(
6694        &self,
6695        mut want_addr: bool,
6696        mut data_len: u32,
6697        mut want_control: bool,
6698        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6699    ) -> Self::RecvMsgResponseFut {
6700        fn _decode(
6701            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6702        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6703            let _response = fidl::client::decode_transaction_body::<
6704                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6705                fidl::encoding::DefaultFuchsiaResourceDialect,
6706                0x1dfb695351d3aa1d,
6707            >(_buf?)?;
6708            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6709        }
6710        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6711            (want_addr, data_len, want_control, flags),
6712            0x1dfb695351d3aa1d,
6713            fidl::encoding::DynamicFlags::empty(),
6714            _decode,
6715        )
6716    }
6717
6718    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6719        SocketSendMsgResult,
6720        fidl::encoding::DefaultFuchsiaResourceDialect,
6721    >;
6722    fn r#send_msg(
6723        &self,
6724        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6725        mut data: &[u8],
6726        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6727        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6728    ) -> Self::SendMsgResponseFut {
6729        fn _decode(
6730            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6731        ) -> Result<SocketSendMsgResult, fidl::Error> {
6732            let _response = fidl::client::decode_transaction_body::<
6733                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6734                fidl::encoding::DefaultFuchsiaResourceDialect,
6735                0x2cf1eac9a7fc8958,
6736            >(_buf?)?;
6737            Ok(_response.map(|x| x))
6738        }
6739        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6740            (addr, data, control, flags),
6741            0x2cf1eac9a7fc8958,
6742            fidl::encoding::DynamicFlags::empty(),
6743            _decode,
6744        )
6745    }
6746
6747    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6748        SocketGetInfoResult,
6749        fidl::encoding::DefaultFuchsiaResourceDialect,
6750    >;
6751    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6752        fn _decode(
6753            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6754        ) -> Result<SocketGetInfoResult, fidl::Error> {
6755            let _response = fidl::client::decode_transaction_body::<
6756                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6757                fidl::encoding::DefaultFuchsiaResourceDialect,
6758                0x39676f75aec339ba,
6759            >(_buf?)?;
6760            Ok(_response.map(|x| (x.domain, x.proto)))
6761        }
6762        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6763            (),
6764            0x39676f75aec339ba,
6765            fidl::encoding::DynamicFlags::empty(),
6766            _decode,
6767        )
6768    }
6769
6770    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6771        SocketSetIpHeaderIncludedResult,
6772        fidl::encoding::DefaultFuchsiaResourceDialect,
6773    >;
6774    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6775        fn _decode(
6776            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6777        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6778            let _response = fidl::client::decode_transaction_body::<
6779                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6780                fidl::encoding::DefaultFuchsiaResourceDialect,
6781                0x5d06a606d95e8f3,
6782            >(_buf?)?;
6783            Ok(_response.map(|x| x))
6784        }
6785        self.client.send_query_and_decode::<
6786            SocketSetIpHeaderIncludedRequest,
6787            SocketSetIpHeaderIncludedResult,
6788        >(
6789            (value,),
6790            0x5d06a606d95e8f3,
6791            fidl::encoding::DynamicFlags::empty(),
6792            _decode,
6793        )
6794    }
6795
6796    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6797        SocketGetIpHeaderIncludedResult,
6798        fidl::encoding::DefaultFuchsiaResourceDialect,
6799    >;
6800    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6801        fn _decode(
6802            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6803        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6804            let _response = fidl::client::decode_transaction_body::<
6805                fidl::encoding::ResultType<
6806                    SocketGetIpHeaderIncludedResponse,
6807                    fidl_fuchsia_posix::Errno,
6808                >,
6809                fidl::encoding::DefaultFuchsiaResourceDialect,
6810                0x76125ad1f4d175f6,
6811            >(_buf?)?;
6812            Ok(_response.map(|x| x.value))
6813        }
6814        self.client
6815            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6816                (),
6817                0x76125ad1f4d175f6,
6818                fidl::encoding::DynamicFlags::empty(),
6819                _decode,
6820            )
6821    }
6822
6823    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6824        SocketSetIcmpv6FilterResult,
6825        fidl::encoding::DefaultFuchsiaResourceDialect,
6826    >;
6827    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6828        fn _decode(
6829            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6830        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6831            let _response = fidl::client::decode_transaction_body::<
6832                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6833                fidl::encoding::DefaultFuchsiaResourceDialect,
6834                0x4ebea92a43ae68a9,
6835            >(_buf?)?;
6836            Ok(_response.map(|x| x))
6837        }
6838        self.client
6839            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6840                (filter,),
6841                0x4ebea92a43ae68a9,
6842                fidl::encoding::DynamicFlags::empty(),
6843                _decode,
6844            )
6845    }
6846
6847    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6848        SocketGetIcmpv6FilterResult,
6849        fidl::encoding::DefaultFuchsiaResourceDialect,
6850    >;
6851    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6852        fn _decode(
6853            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6854        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6855            let _response = fidl::client::decode_transaction_body::<
6856                fidl::encoding::ResultType<
6857                    SocketGetIcmpv6FilterResponse,
6858                    fidl_fuchsia_posix::Errno,
6859                >,
6860                fidl::encoding::DefaultFuchsiaResourceDialect,
6861                0x43bd4f3bc0970ace,
6862            >(_buf?)?;
6863            Ok(_response.map(|x| x.filter))
6864        }
6865        self.client
6866            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6867                (),
6868                0x43bd4f3bc0970ace,
6869                fidl::encoding::DynamicFlags::empty(),
6870                _decode,
6871            )
6872    }
6873
6874    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6875        SocketSetIpv6ChecksumResult,
6876        fidl::encoding::DefaultFuchsiaResourceDialect,
6877    >;
6878    fn r#set_ipv6_checksum(
6879        &self,
6880        mut config: &Ipv6ChecksumConfiguration,
6881    ) -> Self::SetIpv6ChecksumResponseFut {
6882        fn _decode(
6883            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6884        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6885            let _response = fidl::client::decode_transaction_body::<
6886                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6887                fidl::encoding::DefaultFuchsiaResourceDialect,
6888                0x18b7809577199cb4,
6889            >(_buf?)?;
6890            Ok(_response.map(|x| x))
6891        }
6892        self.client
6893            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6894                (config,),
6895                0x18b7809577199cb4,
6896                fidl::encoding::DynamicFlags::empty(),
6897                _decode,
6898            )
6899    }
6900
6901    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6902        SocketGetIpv6ChecksumResult,
6903        fidl::encoding::DefaultFuchsiaResourceDialect,
6904    >;
6905    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6906        fn _decode(
6907            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6908        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6909            let _response = fidl::client::decode_transaction_body::<
6910                fidl::encoding::ResultType<
6911                    SocketGetIpv6ChecksumResponse,
6912                    fidl_fuchsia_posix::Errno,
6913                >,
6914                fidl::encoding::DefaultFuchsiaResourceDialect,
6915                0x1847bf5b2d263dd,
6916            >(_buf?)?;
6917            Ok(_response.map(|x| x.config))
6918        }
6919        self.client
6920            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6921                (),
6922                0x1847bf5b2d263dd,
6923                fidl::encoding::DynamicFlags::empty(),
6924                _decode,
6925            )
6926    }
6927}
6928
6929pub struct SocketEventStream {
6930    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6931}
6932
6933impl std::marker::Unpin for SocketEventStream {}
6934
6935impl futures::stream::FusedStream for SocketEventStream {
6936    fn is_terminated(&self) -> bool {
6937        self.event_receiver.is_terminated()
6938    }
6939}
6940
6941impl futures::Stream for SocketEventStream {
6942    type Item = Result<SocketEvent, fidl::Error>;
6943
6944    fn poll_next(
6945        mut self: std::pin::Pin<&mut Self>,
6946        cx: &mut std::task::Context<'_>,
6947    ) -> std::task::Poll<Option<Self::Item>> {
6948        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6949            &mut self.event_receiver,
6950            cx
6951        )?) {
6952            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6953            None => std::task::Poll::Ready(None),
6954        }
6955    }
6956}
6957
6958#[derive(Debug)]
6959pub enum SocketEvent {}
6960
6961impl SocketEvent {
6962    /// Decodes a message buffer as a [`SocketEvent`].
6963    fn decode(
6964        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6965    ) -> Result<SocketEvent, fidl::Error> {
6966        let (bytes, _handles) = buf.split_mut();
6967        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6968        debug_assert_eq!(tx_header.tx_id, 0);
6969        match tx_header.ordinal {
6970            _ => Err(fidl::Error::UnknownOrdinal {
6971                ordinal: tx_header.ordinal,
6972                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6973            }),
6974        }
6975    }
6976}
6977
6978/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6979pub struct SocketRequestStream {
6980    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6981    is_terminated: bool,
6982}
6983
6984impl std::marker::Unpin for SocketRequestStream {}
6985
6986impl futures::stream::FusedStream for SocketRequestStream {
6987    fn is_terminated(&self) -> bool {
6988        self.is_terminated
6989    }
6990}
6991
6992impl fidl::endpoints::RequestStream for SocketRequestStream {
6993    type Protocol = SocketMarker;
6994    type ControlHandle = SocketControlHandle;
6995
6996    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6997        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6998    }
6999
7000    fn control_handle(&self) -> Self::ControlHandle {
7001        SocketControlHandle { inner: self.inner.clone() }
7002    }
7003
7004    fn into_inner(
7005        self,
7006    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
7007    {
7008        (self.inner, self.is_terminated)
7009    }
7010
7011    fn from_inner(
7012        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7013        is_terminated: bool,
7014    ) -> Self {
7015        Self { inner, is_terminated }
7016    }
7017}
7018
7019impl futures::Stream for SocketRequestStream {
7020    type Item = Result<SocketRequest, fidl::Error>;
7021
7022    fn poll_next(
7023        mut self: std::pin::Pin<&mut Self>,
7024        cx: &mut std::task::Context<'_>,
7025    ) -> std::task::Poll<Option<Self::Item>> {
7026        let this = &mut *self;
7027        if this.inner.check_shutdown(cx) {
7028            this.is_terminated = true;
7029            return std::task::Poll::Ready(None);
7030        }
7031        if this.is_terminated {
7032            panic!("polled SocketRequestStream after completion");
7033        }
7034        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
7035            |bytes, handles| {
7036                match this.inner.channel().read_etc(cx, bytes, handles) {
7037                    std::task::Poll::Ready(Ok(())) => {}
7038                    std::task::Poll::Pending => return std::task::Poll::Pending,
7039                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
7040                        this.is_terminated = true;
7041                        return std::task::Poll::Ready(None);
7042                    }
7043                    std::task::Poll::Ready(Err(e)) => {
7044                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
7045                            e.into(),
7046                        ))));
7047                    }
7048                }
7049
7050                // A message has been received from the channel
7051                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
7052
7053                std::task::Poll::Ready(Some(match header.ordinal {
7054                    0x20d8a7aba2168a79 => {
7055                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
7056                        let mut req = fidl::new_empty!(
7057                            fidl_fuchsia_unknown::CloneableCloneRequest,
7058                            fidl::encoding::DefaultFuchsiaResourceDialect
7059                        );
7060                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
7061                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7062                        Ok(SocketRequest::Clone { request: req.request, control_handle })
7063                    }
7064                    0x5ac5d459ad7f657e => {
7065                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7066                        let mut req = fidl::new_empty!(
7067                            fidl::encoding::EmptyPayload,
7068                            fidl::encoding::DefaultFuchsiaResourceDialect
7069                        );
7070                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7071                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7072                        Ok(SocketRequest::Close {
7073                            responder: SocketCloseResponder {
7074                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7075                                tx_id: header.tx_id,
7076                            },
7077                        })
7078                    }
7079                    0x2658edee9decfc06 => {
7080                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7081                        let mut req = fidl::new_empty!(
7082                            fidl::encoding::EmptyPayload,
7083                            fidl::encoding::DefaultFuchsiaResourceDialect
7084                        );
7085                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7086                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7087                        Ok(SocketRequest::Query {
7088                            responder: SocketQueryResponder {
7089                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7090                                tx_id: header.tx_id,
7091                            },
7092                        })
7093                    }
7094                    0x1fd74ee8b9a4a876 => {
7095                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7096                        let mut req = fidl::new_empty!(
7097                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
7098                            fidl::encoding::DefaultFuchsiaResourceDialect
7099                        );
7100                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7101                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7102                        Ok(SocketRequest::SetReuseAddress {
7103                            value: req.value,
7104
7105                            responder: SocketSetReuseAddressResponder {
7106                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7107                                tx_id: header.tx_id,
7108                            },
7109                        })
7110                    }
7111                    0x67b7206b8d1bc0a5 => {
7112                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7113                        let mut req = fidl::new_empty!(
7114                            fidl::encoding::EmptyPayload,
7115                            fidl::encoding::DefaultFuchsiaResourceDialect
7116                        );
7117                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7118                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7119                        Ok(SocketRequest::GetReuseAddress {
7120                            responder: SocketGetReuseAddressResponder {
7121                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7122                                tx_id: header.tx_id,
7123                            },
7124                        })
7125                    }
7126                    0x5aad39b33e5f6ebb => {
7127                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7128                        let mut req = fidl::new_empty!(
7129                            fidl::encoding::EmptyPayload,
7130                            fidl::encoding::DefaultFuchsiaResourceDialect
7131                        );
7132                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7133                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7134                        Ok(SocketRequest::GetError {
7135                            responder: SocketGetErrorResponder {
7136                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7137                                tx_id: header.tx_id,
7138                            },
7139                        })
7140                    }
7141                    0x6023e081ce3cd947 => {
7142                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7143                        let mut req = fidl::new_empty!(
7144                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
7145                            fidl::encoding::DefaultFuchsiaResourceDialect
7146                        );
7147                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
7148                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7149                        Ok(SocketRequest::SetBroadcast {
7150                            value: req.value,
7151
7152                            responder: SocketSetBroadcastResponder {
7153                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7154                                tx_id: header.tx_id,
7155                            },
7156                        })
7157                    }
7158                    0x68796fc556f9780d => {
7159                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7160                        let mut req = fidl::new_empty!(
7161                            fidl::encoding::EmptyPayload,
7162                            fidl::encoding::DefaultFuchsiaResourceDialect
7163                        );
7164                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7165                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7166                        Ok(SocketRequest::GetBroadcast {
7167                            responder: SocketGetBroadcastResponder {
7168                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7169                                tx_id: header.tx_id,
7170                            },
7171                        })
7172                    }
7173                    0x756eac32d73a7a70 => {
7174                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7175                        let mut req = fidl::new_empty!(
7176                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
7177                            fidl::encoding::DefaultFuchsiaResourceDialect
7178                        );
7179                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7180                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7181                        Ok(SocketRequest::SetSendBuffer {
7182                            value_bytes: req.value_bytes,
7183
7184                            responder: SocketSetSendBufferResponder {
7185                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7186                                tx_id: header.tx_id,
7187                            },
7188                        })
7189                    }
7190                    0x78a52fd9c7b2410b => {
7191                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7192                        let mut req = fidl::new_empty!(
7193                            fidl::encoding::EmptyPayload,
7194                            fidl::encoding::DefaultFuchsiaResourceDialect
7195                        );
7196                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7197                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7198                        Ok(SocketRequest::GetSendBuffer {
7199                            responder: SocketGetSendBufferResponder {
7200                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7201                                tx_id: header.tx_id,
7202                            },
7203                        })
7204                    }
7205                    0x6b0cf2f1919c7001 => {
7206                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7207                        let mut req = fidl::new_empty!(
7208                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7209                            fidl::encoding::DefaultFuchsiaResourceDialect
7210                        );
7211                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7212                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7213                        Ok(SocketRequest::SetReceiveBuffer {
7214                            value_bytes: req.value_bytes,
7215
7216                            responder: SocketSetReceiveBufferResponder {
7217                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7218                                tx_id: header.tx_id,
7219                            },
7220                        })
7221                    }
7222                    0x14c1a4b64f709e5c => {
7223                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7224                        let mut req = fidl::new_empty!(
7225                            fidl::encoding::EmptyPayload,
7226                            fidl::encoding::DefaultFuchsiaResourceDialect
7227                        );
7228                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7229                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7230                        Ok(SocketRequest::GetReceiveBuffer {
7231                            responder: SocketGetReceiveBufferResponder {
7232                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7233                                tx_id: header.tx_id,
7234                            },
7235                        })
7236                    }
7237                    0x572df8f0b920d2c7 => {
7238                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7239                        let mut req = fidl::new_empty!(
7240                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7241                            fidl::encoding::DefaultFuchsiaResourceDialect
7242                        );
7243                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7244                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7245                        Ok(SocketRequest::SetKeepAlive {
7246                            value: req.value,
7247
7248                            responder: SocketSetKeepAliveResponder {
7249                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7250                                tx_id: header.tx_id,
7251                            },
7252                        })
7253                    }
7254                    0x2dd29d3215f2c9d2 => {
7255                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7256                        let mut req = fidl::new_empty!(
7257                            fidl::encoding::EmptyPayload,
7258                            fidl::encoding::DefaultFuchsiaResourceDialect
7259                        );
7260                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7261                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7262                        Ok(SocketRequest::GetKeepAlive {
7263                            responder: SocketGetKeepAliveResponder {
7264                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7265                                tx_id: header.tx_id,
7266                            },
7267                        })
7268                    }
7269                    0x3ecb49968bee439 => {
7270                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7271                        let mut req = fidl::new_empty!(
7272                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7273                            fidl::encoding::DefaultFuchsiaResourceDialect
7274                        );
7275                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7276                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7277                        Ok(SocketRequest::SetOutOfBandInline {
7278                            value: req.value,
7279
7280                            responder: SocketSetOutOfBandInlineResponder {
7281                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7282                                tx_id: header.tx_id,
7283                            },
7284                        })
7285                    }
7286                    0x348c1ab3aeca1745 => {
7287                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7288                        let mut req = fidl::new_empty!(
7289                            fidl::encoding::EmptyPayload,
7290                            fidl::encoding::DefaultFuchsiaResourceDialect
7291                        );
7292                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7293                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7294                        Ok(SocketRequest::GetOutOfBandInline {
7295                            responder: SocketGetOutOfBandInlineResponder {
7296                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7297                                tx_id: header.tx_id,
7298                            },
7299                        })
7300                    }
7301                    0x6bbf00c53a4c78c2 => {
7302                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7303                        let mut req = fidl::new_empty!(
7304                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7305                            fidl::encoding::DefaultFuchsiaResourceDialect
7306                        );
7307                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7308                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7309                        Ok(SocketRequest::SetNoCheck {
7310                            value: req.value,
7311
7312                            responder: SocketSetNoCheckResponder {
7313                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7314                                tx_id: header.tx_id,
7315                            },
7316                        })
7317                    }
7318                    0x2cd4249286417694 => {
7319                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7320                        let mut req = fidl::new_empty!(
7321                            fidl::encoding::EmptyPayload,
7322                            fidl::encoding::DefaultFuchsiaResourceDialect
7323                        );
7324                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7325                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7326                        Ok(SocketRequest::GetNoCheck {
7327                            responder: SocketGetNoCheckResponder {
7328                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7329                                tx_id: header.tx_id,
7330                            },
7331                        })
7332                    }
7333                    0x45386351246e998e => {
7334                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7335                        let mut req = fidl::new_empty!(
7336                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7337                            fidl::encoding::DefaultFuchsiaResourceDialect
7338                        );
7339                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7340                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7341                        Ok(SocketRequest::SetLinger {
7342                            linger: req.linger,
7343                            length_secs: req.length_secs,
7344
7345                            responder: SocketSetLingerResponder {
7346                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7347                                tx_id: header.tx_id,
7348                            },
7349                        })
7350                    }
7351                    0x48eb20fc5ccb0e45 => {
7352                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7353                        let mut req = fidl::new_empty!(
7354                            fidl::encoding::EmptyPayload,
7355                            fidl::encoding::DefaultFuchsiaResourceDialect
7356                        );
7357                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7358                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7359                        Ok(SocketRequest::GetLinger {
7360                            responder: SocketGetLingerResponder {
7361                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7362                                tx_id: header.tx_id,
7363                            },
7364                        })
7365                    }
7366                    0x547dc9cc0455189e => {
7367                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7368                        let mut req = fidl::new_empty!(
7369                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7370                            fidl::encoding::DefaultFuchsiaResourceDialect
7371                        );
7372                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7373                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7374                        Ok(SocketRequest::SetReusePort {
7375                            value: req.value,
7376
7377                            responder: SocketSetReusePortResponder {
7378                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7379                                tx_id: header.tx_id,
7380                            },
7381                        })
7382                    }
7383                    0x24dd3e5cb36d9ccb => {
7384                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7385                        let mut req = fidl::new_empty!(
7386                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
7387                            fidl::encoding::DefaultFuchsiaResourceDialect
7388                        );
7389                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest>(&header, _body_bytes, handles, &mut req)?;
7390                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7391                        Ok(SocketRequest::SetReusePortDeprecated {
7392                            value: req.value,
7393
7394                            responder: SocketSetReusePortDeprecatedResponder {
7395                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7396                                tx_id: header.tx_id,
7397                            },
7398                        })
7399                    }
7400                    0x7a112c1ab54ff828 => {
7401                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7402                        let mut req = fidl::new_empty!(
7403                            fidl::encoding::EmptyPayload,
7404                            fidl::encoding::DefaultFuchsiaResourceDialect
7405                        );
7406                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7407                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7408                        Ok(SocketRequest::GetReusePort {
7409                            responder: SocketGetReusePortResponder {
7410                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7411                                tx_id: header.tx_id,
7412                            },
7413                        })
7414                    }
7415                    0x67ce6db6c2ec8966 => {
7416                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7417                        let mut req = fidl::new_empty!(
7418                            fidl::encoding::EmptyPayload,
7419                            fidl::encoding::DefaultFuchsiaResourceDialect
7420                        );
7421                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7422                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7423                        Ok(SocketRequest::GetAcceptConn {
7424                            responder: SocketGetAcceptConnResponder {
7425                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7426                                tx_id: header.tx_id,
7427                            },
7428                        })
7429                    }
7430                    0x2118b483f28aafc4 => {
7431                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7432                        let mut req = fidl::new_empty!(
7433                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7434                            fidl::encoding::DefaultFuchsiaResourceDialect
7435                        );
7436                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7437                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7438                        Ok(SocketRequest::SetBindToDevice {
7439                            value: req.value,
7440
7441                            responder: SocketSetBindToDeviceResponder {
7442                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7443                                tx_id: header.tx_id,
7444                            },
7445                        })
7446                    }
7447                    0x1ab1fbf0ef7906c8 => {
7448                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7449                        let mut req = fidl::new_empty!(
7450                            fidl::encoding::EmptyPayload,
7451                            fidl::encoding::DefaultFuchsiaResourceDialect
7452                        );
7453                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7454                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7455                        Ok(SocketRequest::GetBindToDevice {
7456                            responder: SocketGetBindToDeviceResponder {
7457                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7458                                tx_id: header.tx_id,
7459                            },
7460                        })
7461                    }
7462                    0x6e387a0def00821 => {
7463                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7464                        let mut req = fidl::new_empty!(
7465                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7466                            fidl::encoding::DefaultFuchsiaResourceDialect
7467                        );
7468                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7469                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7470                        Ok(SocketRequest::SetBindToInterfaceIndex {
7471                            value: req.value,
7472
7473                            responder: SocketSetBindToInterfaceIndexResponder {
7474                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7475                                tx_id: header.tx_id,
7476                            },
7477                        })
7478                    }
7479                    0x59c31dd3e3078295 => {
7480                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7481                        let mut req = fidl::new_empty!(
7482                            fidl::encoding::EmptyPayload,
7483                            fidl::encoding::DefaultFuchsiaResourceDialect
7484                        );
7485                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7486                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7487                        Ok(SocketRequest::GetBindToInterfaceIndex {
7488                            responder: SocketGetBindToInterfaceIndexResponder {
7489                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7490                                tx_id: header.tx_id,
7491                            },
7492                        })
7493                    }
7494                    0x285d6516c263d839 => {
7495                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7496                        let mut req = fidl::new_empty!(
7497                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7498                            fidl::encoding::DefaultFuchsiaResourceDialect
7499                        );
7500                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7501                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7502                        Ok(SocketRequest::SetTimestamp {
7503                            value: req.value,
7504
7505                            responder: SocketSetTimestampResponder {
7506                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7507                                tx_id: header.tx_id,
7508                            },
7509                        })
7510                    }
7511                    0x49f2fffbbcc2bd27 => {
7512                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7513                        let mut req = fidl::new_empty!(
7514                            fidl::encoding::EmptyPayload,
7515                            fidl::encoding::DefaultFuchsiaResourceDialect
7516                        );
7517                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7518                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7519                        Ok(SocketRequest::GetTimestamp {
7520                            responder: SocketGetTimestampResponder {
7521                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7522                                tx_id: header.tx_id,
7523                            },
7524                        })
7525                    }
7526                    0x6ead6de09f653236 => {
7527                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7528                        let mut req = fidl::new_empty!(
7529                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7530                            fidl::encoding::DefaultFuchsiaResourceDialect
7531                        );
7532                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7533                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7534                        Ok(SocketRequest::SetMark {
7535                            domain: req.domain,
7536                            mark: req.mark,
7537
7538                            responder: SocketSetMarkResponder {
7539                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7540                                tx_id: header.tx_id,
7541                            },
7542                        })
7543                    }
7544                    0x57a2752c61d93d47 => {
7545                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7546                        let mut req = fidl::new_empty!(
7547                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7548                            fidl::encoding::DefaultFuchsiaResourceDialect
7549                        );
7550                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7551                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7552                        Ok(SocketRequest::GetMark {
7553                            domain: req.domain,
7554
7555                            responder: SocketGetMarkResponder {
7556                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7557                                tx_id: header.tx_id,
7558                            },
7559                        })
7560                    }
7561                    0x2c2f47fd8f924e52 => {
7562                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7563                        let mut req = fidl::new_empty!(
7564                            fidl::encoding::EmptyPayload,
7565                            fidl::encoding::DefaultFuchsiaResourceDialect
7566                        );
7567                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7568                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7569                        Ok(SocketRequest::GetCookie {
7570                            responder: SocketGetCookieResponder {
7571                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7572                                tx_id: header.tx_id,
7573                            },
7574                        })
7575                    }
7576                    0x4bc6400ae92125d => {
7577                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7578                        let mut req = fidl::new_empty!(
7579                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7580                            fidl::encoding::DefaultFuchsiaResourceDialect
7581                        );
7582                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7583                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7584                        Ok(SocketRequest::Bind {
7585                            addr: req.addr,
7586
7587                            responder: SocketBindResponder {
7588                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7589                                tx_id: header.tx_id,
7590                            },
7591                        })
7592                    }
7593                    0x5f05f19bfdd38871 => {
7594                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7595                        let mut req = fidl::new_empty!(
7596                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7597                            fidl::encoding::DefaultFuchsiaResourceDialect
7598                        );
7599                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7600                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7601                        Ok(SocketRequest::Connect {
7602                            addr: req.addr,
7603
7604                            responder: SocketConnectResponder {
7605                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7606                                tx_id: header.tx_id,
7607                            },
7608                        })
7609                    }
7610                    0x74e63b91f7b29b2 => {
7611                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7612                        let mut req = fidl::new_empty!(
7613                            fidl::encoding::EmptyPayload,
7614                            fidl::encoding::DefaultFuchsiaResourceDialect
7615                        );
7616                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7617                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7618                        Ok(SocketRequest::Disconnect {
7619                            responder: SocketDisconnectResponder {
7620                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7621                                tx_id: header.tx_id,
7622                            },
7623                        })
7624                    }
7625                    0x475f23f84a1a4f85 => {
7626                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7627                        let mut req = fidl::new_empty!(
7628                            fidl::encoding::EmptyPayload,
7629                            fidl::encoding::DefaultFuchsiaResourceDialect
7630                        );
7631                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7632                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7633                        Ok(SocketRequest::GetSockName {
7634                            responder: SocketGetSockNameResponder {
7635                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7636                                tx_id: header.tx_id,
7637                            },
7638                        })
7639                    }
7640                    0x1ffecf4bd5b6432e => {
7641                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7642                        let mut req = fidl::new_empty!(
7643                            fidl::encoding::EmptyPayload,
7644                            fidl::encoding::DefaultFuchsiaResourceDialect
7645                        );
7646                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7647                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7648                        Ok(SocketRequest::GetPeerName {
7649                            responder: SocketGetPeerNameResponder {
7650                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7651                                tx_id: header.tx_id,
7652                            },
7653                        })
7654                    }
7655                    0x247f38b6db68c336 => {
7656                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7657                        let mut req = fidl::new_empty!(
7658                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7659                            fidl::encoding::DefaultFuchsiaResourceDialect
7660                        );
7661                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7662                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7663                        Ok(SocketRequest::Shutdown {
7664                            mode: req.mode,
7665
7666                            responder: SocketShutdownResponder {
7667                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7668                                tx_id: header.tx_id,
7669                            },
7670                        })
7671                    }
7672                    0x995c600475b6d46 => {
7673                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7674                        let mut req = fidl::new_empty!(
7675                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7676                            fidl::encoding::DefaultFuchsiaResourceDialect
7677                        );
7678                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7679                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7680                        Ok(SocketRequest::SetIpTypeOfService {
7681                            value: req.value,
7682
7683                            responder: SocketSetIpTypeOfServiceResponder {
7684                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7685                                tx_id: header.tx_id,
7686                            },
7687                        })
7688                    }
7689                    0x3814a04259f75fcb => {
7690                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7691                        let mut req = fidl::new_empty!(
7692                            fidl::encoding::EmptyPayload,
7693                            fidl::encoding::DefaultFuchsiaResourceDialect
7694                        );
7695                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7696                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7697                        Ok(SocketRequest::GetIpTypeOfService {
7698                            responder: SocketGetIpTypeOfServiceResponder {
7699                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7700                                tx_id: header.tx_id,
7701                            },
7702                        })
7703                    }
7704                    0x29e2424b433ae1ef => {
7705                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7706                        let mut req = fidl::new_empty!(
7707                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7708                            fidl::encoding::DefaultFuchsiaResourceDialect
7709                        );
7710                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7711                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7712                        Ok(SocketRequest::SetIpTtl {
7713                            value: req.value,
7714
7715                            responder: SocketSetIpTtlResponder {
7716                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7717                                tx_id: header.tx_id,
7718                            },
7719                        })
7720                    }
7721                    0x47e47fa1f24da471 => {
7722                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7723                        let mut req = fidl::new_empty!(
7724                            fidl::encoding::EmptyPayload,
7725                            fidl::encoding::DefaultFuchsiaResourceDialect
7726                        );
7727                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7728                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7729                        Ok(SocketRequest::GetIpTtl {
7730                            responder: SocketGetIpTtlResponder {
7731                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7732                                tx_id: header.tx_id,
7733                            },
7734                        })
7735                    }
7736                    0x392d16bee20c0e16 => {
7737                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7738                        let mut req = fidl::new_empty!(
7739                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7740                            fidl::encoding::DefaultFuchsiaResourceDialect
7741                        );
7742                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7743                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7744                        Ok(SocketRequest::SetIpPacketInfo {
7745                            value: req.value,
7746
7747                            responder: SocketSetIpPacketInfoResponder {
7748                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7749                                tx_id: header.tx_id,
7750                            },
7751                        })
7752                    }
7753                    0x54b505f242280740 => {
7754                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7755                        let mut req = fidl::new_empty!(
7756                            fidl::encoding::EmptyPayload,
7757                            fidl::encoding::DefaultFuchsiaResourceDialect
7758                        );
7759                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7760                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7761                        Ok(SocketRequest::GetIpPacketInfo {
7762                            responder: SocketGetIpPacketInfoResponder {
7763                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7764                                tx_id: header.tx_id,
7765                            },
7766                        })
7767                    }
7768                    0x6c4f6714995f84ef => {
7769                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7770                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7771                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7772                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7773                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7774                            value: req.value,
7775
7776                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7777                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7778                                tx_id: header.tx_id,
7779                            },
7780                        })
7781                    }
7782                    0x4158ba7dc2795960 => {
7783                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7784                        let mut req = fidl::new_empty!(
7785                            fidl::encoding::EmptyPayload,
7786                            fidl::encoding::DefaultFuchsiaResourceDialect
7787                        );
7788                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7789                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7790                        Ok(SocketRequest::GetIpReceiveTypeOfService {
7791                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7792                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7793                                tx_id: header.tx_id,
7794                            },
7795                        })
7796                    }
7797                    0x46f15be0ce0ab82b => {
7798                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7799                        let mut req = fidl::new_empty!(
7800                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7801                            fidl::encoding::DefaultFuchsiaResourceDialect
7802                        );
7803                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7804                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7805                        Ok(SocketRequest::SetIpReceiveTtl {
7806                            value: req.value,
7807
7808                            responder: SocketSetIpReceiveTtlResponder {
7809                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7810                                tx_id: header.tx_id,
7811                            },
7812                        })
7813                    }
7814                    0x678ddd5a5dfa2eb5 => {
7815                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7816                        let mut req = fidl::new_empty!(
7817                            fidl::encoding::EmptyPayload,
7818                            fidl::encoding::DefaultFuchsiaResourceDialect
7819                        );
7820                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7821                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7822                        Ok(SocketRequest::GetIpReceiveTtl {
7823                            responder: SocketGetIpReceiveTtlResponder {
7824                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7825                                tx_id: header.tx_id,
7826                            },
7827                        })
7828                    }
7829                    0x752fbfa9b12befe => {
7830                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7831                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7832                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7833                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7834                        Ok(SocketRequest::SetIpMulticastInterface {
7835                            iface: req.iface,
7836                            address: req.address,
7837
7838                            responder: SocketSetIpMulticastInterfaceResponder {
7839                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7840                                tx_id: header.tx_id,
7841                            },
7842                        })
7843                    }
7844                    0x320bd14c4df046c4 => {
7845                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7846                        let mut req = fidl::new_empty!(
7847                            fidl::encoding::EmptyPayload,
7848                            fidl::encoding::DefaultFuchsiaResourceDialect
7849                        );
7850                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7851                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7852                        Ok(SocketRequest::GetIpMulticastInterface {
7853                            responder: SocketGetIpMulticastInterfaceResponder {
7854                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7855                                tx_id: header.tx_id,
7856                            },
7857                        })
7858                    }
7859                    0x63134d53772916a1 => {
7860                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7861                        let mut req = fidl::new_empty!(
7862                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7863                            fidl::encoding::DefaultFuchsiaResourceDialect
7864                        );
7865                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7866                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7867                        Ok(SocketRequest::SetIpMulticastTtl {
7868                            value: req.value,
7869
7870                            responder: SocketSetIpMulticastTtlResponder {
7871                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7872                                tx_id: header.tx_id,
7873                            },
7874                        })
7875                    }
7876                    0x4665cd378f39e1a => {
7877                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7878                        let mut req = fidl::new_empty!(
7879                            fidl::encoding::EmptyPayload,
7880                            fidl::encoding::DefaultFuchsiaResourceDialect
7881                        );
7882                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7883                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7884                        Ok(SocketRequest::GetIpMulticastTtl {
7885                            responder: SocketGetIpMulticastTtlResponder {
7886                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7887                                tx_id: header.tx_id,
7888                            },
7889                        })
7890                    }
7891                    0x20c55c11f00943ea => {
7892                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7893                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7894                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7895                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7896                        Ok(SocketRequest::SetIpMulticastLoopback {
7897                            value: req.value,
7898
7899                            responder: SocketSetIpMulticastLoopbackResponder {
7900                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7901                                tx_id: header.tx_id,
7902                            },
7903                        })
7904                    }
7905                    0x3b6b26ff558298f2 => {
7906                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7907                        let mut req = fidl::new_empty!(
7908                            fidl::encoding::EmptyPayload,
7909                            fidl::encoding::DefaultFuchsiaResourceDialect
7910                        );
7911                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7912                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7913                        Ok(SocketRequest::GetIpMulticastLoopback {
7914                            responder: SocketGetIpMulticastLoopbackResponder {
7915                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7916                                tx_id: header.tx_id,
7917                            },
7918                        })
7919                    }
7920                    0x76bc7df115a3b4d0 => {
7921                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7922                        let mut req = fidl::new_empty!(
7923                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7924                            fidl::encoding::DefaultFuchsiaResourceDialect
7925                        );
7926                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7927                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7928                        Ok(SocketRequest::AddIpMembership {
7929                            membership: req.membership,
7930
7931                            responder: SocketAddIpMembershipResponder {
7932                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7933                                tx_id: header.tx_id,
7934                            },
7935                        })
7936                    }
7937                    0x2888f3099188d03 => {
7938                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7939                        let mut req = fidl::new_empty!(
7940                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7941                            fidl::encoding::DefaultFuchsiaResourceDialect
7942                        );
7943                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7944                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7945                        Ok(SocketRequest::DropIpMembership {
7946                            membership: req.membership,
7947
7948                            responder: SocketDropIpMembershipResponder {
7949                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7950                                tx_id: header.tx_id,
7951                            },
7952                        })
7953                    }
7954                    0x1ae532b0c066e3a0 => {
7955                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7956                        let mut req = fidl::new_empty!(
7957                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7958                            fidl::encoding::DefaultFuchsiaResourceDialect
7959                        );
7960                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7961                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7962                        Ok(SocketRequest::SetIpTransparent {
7963                            value: req.value,
7964
7965                            responder: SocketSetIpTransparentResponder {
7966                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7967                                tx_id: header.tx_id,
7968                            },
7969                        })
7970                    }
7971                    0x51d43695962ebfb5 => {
7972                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7973                        let mut req = fidl::new_empty!(
7974                            fidl::encoding::EmptyPayload,
7975                            fidl::encoding::DefaultFuchsiaResourceDialect
7976                        );
7977                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7978                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7979                        Ok(SocketRequest::GetIpTransparent {
7980                            responder: SocketGetIpTransparentResponder {
7981                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7982                                tx_id: header.tx_id,
7983                            },
7984                        })
7985                    }
7986                    0x4722b4ce52f7840 => {
7987                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7988                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7989                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7990                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7991                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7992                            value: req.value,
7993
7994                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
7995                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7996                                tx_id: header.tx_id,
7997                            },
7998                        })
7999                    }
8000                    0x2a0e7dc5d6bfdfe9 => {
8001                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8002                        let mut req = fidl::new_empty!(
8003                            fidl::encoding::EmptyPayload,
8004                            fidl::encoding::DefaultFuchsiaResourceDialect
8005                        );
8006                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8007                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8008                        Ok(SocketRequest::GetIpReceiveOriginalDestinationAddress {
8009                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
8010                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8011                                tx_id: header.tx_id,
8012                            },
8013                        })
8014                    }
8015                    0x7c94727acb4ea4b3 => {
8016                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8017                        let mut req = fidl::new_empty!(
8018                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
8019                            fidl::encoding::DefaultFuchsiaResourceDialect
8020                        );
8021                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
8022                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8023                        Ok(SocketRequest::AddIpv6Membership {
8024                            membership: req.membership,
8025
8026                            responder: SocketAddIpv6MembershipResponder {
8027                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8028                                tx_id: header.tx_id,
8029                            },
8030                        })
8031                    }
8032                    0x42104c70ccaba304 => {
8033                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8034                        let mut req = fidl::new_empty!(
8035                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
8036                            fidl::encoding::DefaultFuchsiaResourceDialect
8037                        );
8038                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
8039                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8040                        Ok(SocketRequest::DropIpv6Membership {
8041                            membership: req.membership,
8042
8043                            responder: SocketDropIpv6MembershipResponder {
8044                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8045                                tx_id: header.tx_id,
8046                            },
8047                        })
8048                    }
8049                    0x135f76db3774ab3b => {
8050                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8051                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8052                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
8053                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8054                        Ok(SocketRequest::SetIpv6MulticastInterface {
8055                            value: req.value,
8056
8057                            responder: SocketSetIpv6MulticastInterfaceResponder {
8058                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8059                                tx_id: header.tx_id,
8060                            },
8061                        })
8062                    }
8063                    0x1f26fcdd348f1882 => {
8064                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8065                        let mut req = fidl::new_empty!(
8066                            fidl::encoding::EmptyPayload,
8067                            fidl::encoding::DefaultFuchsiaResourceDialect
8068                        );
8069                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8070                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8071                        Ok(SocketRequest::GetIpv6MulticastInterface {
8072                            responder: SocketGetIpv6MulticastInterfaceResponder {
8073                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8074                                tx_id: header.tx_id,
8075                            },
8076                        })
8077                    }
8078                    0x157d51e98f462859 => {
8079                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8080                        let mut req = fidl::new_empty!(
8081                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
8082                            fidl::encoding::DefaultFuchsiaResourceDialect
8083                        );
8084                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8085                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8086                        Ok(SocketRequest::SetIpv6UnicastHops {
8087                            value: req.value,
8088
8089                            responder: SocketSetIpv6UnicastHopsResponder {
8090                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8091                                tx_id: header.tx_id,
8092                            },
8093                        })
8094                    }
8095                    0x21f4641cad8bd8d2 => {
8096                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8097                        let mut req = fidl::new_empty!(
8098                            fidl::encoding::EmptyPayload,
8099                            fidl::encoding::DefaultFuchsiaResourceDialect
8100                        );
8101                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8102                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8103                        Ok(SocketRequest::GetIpv6UnicastHops {
8104                            responder: SocketGetIpv6UnicastHopsResponder {
8105                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8106                                tx_id: header.tx_id,
8107                            },
8108                        })
8109                    }
8110                    0x5c24808ed2e84a1e => {
8111                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8112                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8113                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
8114                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8115                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
8116                            value: req.value,
8117
8118                            responder: SocketSetIpv6ReceiveHopLimitResponder {
8119                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8120                                tx_id: header.tx_id,
8121                            },
8122                        })
8123                    }
8124                    0x341e06689885b4c0 => {
8125                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8126                        let mut req = fidl::new_empty!(
8127                            fidl::encoding::EmptyPayload,
8128                            fidl::encoding::DefaultFuchsiaResourceDialect
8129                        );
8130                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8131                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8132                        Ok(SocketRequest::GetIpv6ReceiveHopLimit {
8133                            responder: SocketGetIpv6ReceiveHopLimitResponder {
8134                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8135                                tx_id: header.tx_id,
8136                            },
8137                        })
8138                    }
8139                    0x25b9cd4d181f82c1 => {
8140                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8141                        let mut req = fidl::new_empty!(
8142                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
8143                            fidl::encoding::DefaultFuchsiaResourceDialect
8144                        );
8145                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8146                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8147                        Ok(SocketRequest::SetIpv6MulticastHops {
8148                            value: req.value,
8149
8150                            responder: SocketSetIpv6MulticastHopsResponder {
8151                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8152                                tx_id: header.tx_id,
8153                            },
8154                        })
8155                    }
8156                    0x52916948a365012a => {
8157                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8158                        let mut req = fidl::new_empty!(
8159                            fidl::encoding::EmptyPayload,
8160                            fidl::encoding::DefaultFuchsiaResourceDialect
8161                        );
8162                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8163                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8164                        Ok(SocketRequest::GetIpv6MulticastHops {
8165                            responder: SocketGetIpv6MulticastHopsResponder {
8166                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8167                                tx_id: header.tx_id,
8168                            },
8169                        })
8170                    }
8171                    0x55701c409ff41b40 => {
8172                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8173                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8174                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
8175                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8176                        Ok(SocketRequest::SetIpv6MulticastLoopback {
8177                            value: req.value,
8178
8179                            responder: SocketSetIpv6MulticastLoopbackResponder {
8180                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8181                                tx_id: header.tx_id,
8182                            },
8183                        })
8184                    }
8185                    0x4415b701fde319c3 => {
8186                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8187                        let mut req = fidl::new_empty!(
8188                            fidl::encoding::EmptyPayload,
8189                            fidl::encoding::DefaultFuchsiaResourceDialect
8190                        );
8191                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8192                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8193                        Ok(SocketRequest::GetIpv6MulticastLoopback {
8194                            responder: SocketGetIpv6MulticastLoopbackResponder {
8195                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8196                                tx_id: header.tx_id,
8197                            },
8198                        })
8199                    }
8200                    0x4873f1364758cbba => {
8201                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8202                        let mut req = fidl::new_empty!(
8203                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8204                            fidl::encoding::DefaultFuchsiaResourceDialect
8205                        );
8206                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8207                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8208                        Ok(SocketRequest::SetIpv6Only {
8209                            value: req.value,
8210
8211                            responder: SocketSetIpv6OnlyResponder {
8212                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8213                                tx_id: header.tx_id,
8214                            },
8215                        })
8216                    }
8217                    0x4aa3340a1a26b89c => {
8218                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8219                        let mut req = fidl::new_empty!(
8220                            fidl::encoding::EmptyPayload,
8221                            fidl::encoding::DefaultFuchsiaResourceDialect
8222                        );
8223                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8224                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8225                        Ok(SocketRequest::GetIpv6Only {
8226                            responder: SocketGetIpv6OnlyResponder {
8227                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8228                                tx_id: header.tx_id,
8229                            },
8230                        })
8231                    }
8232                    0x58f07c8788d099a0 => {
8233                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8234                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8235                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8236                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8237                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8238                            value: req.value,
8239
8240                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8241                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8242                                tx_id: header.tx_id,
8243                            },
8244                        })
8245                    }
8246                    0x2e334df1da553ffa => {
8247                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8248                        let mut req = fidl::new_empty!(
8249                            fidl::encoding::EmptyPayload,
8250                            fidl::encoding::DefaultFuchsiaResourceDialect
8251                        );
8252                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8253                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8254                        Ok(SocketRequest::GetIpv6ReceiveTrafficClass {
8255                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8256                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8257                                tx_id: header.tx_id,
8258                            },
8259                        })
8260                    }
8261                    0x6af077800c5a0b4f => {
8262                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8263                        let mut req = fidl::new_empty!(
8264                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8265                            fidl::encoding::DefaultFuchsiaResourceDialect
8266                        );
8267                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8268                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8269                        Ok(SocketRequest::SetIpv6TrafficClass {
8270                            value: req.value,
8271
8272                            responder: SocketSetIpv6TrafficClassResponder {
8273                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8274                                tx_id: header.tx_id,
8275                            },
8276                        })
8277                    }
8278                    0x6baf6eed8fc2f04 => {
8279                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8280                        let mut req = fidl::new_empty!(
8281                            fidl::encoding::EmptyPayload,
8282                            fidl::encoding::DefaultFuchsiaResourceDialect
8283                        );
8284                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8285                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8286                        Ok(SocketRequest::GetIpv6TrafficClass {
8287                            responder: SocketGetIpv6TrafficClassResponder {
8288                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8289                                tx_id: header.tx_id,
8290                            },
8291                        })
8292                    }
8293                    0x19259775b1a92768 => {
8294                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8295                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8296                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8297                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8298                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8299                            value: req.value,
8300
8301                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8302                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8303                                tx_id: header.tx_id,
8304                            },
8305                        })
8306                    }
8307                    0x7acd4a2775baec75 => {
8308                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8309                        let mut req = fidl::new_empty!(
8310                            fidl::encoding::EmptyPayload,
8311                            fidl::encoding::DefaultFuchsiaResourceDialect
8312                        );
8313                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8314                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8315                        Ok(SocketRequest::GetIpv6ReceivePacketInfo {
8316                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8317                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8318                                tx_id: header.tx_id,
8319                            },
8320                        })
8321                    }
8322                    0x38bf28f0dafdbac0 => {
8323                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8324                        let mut req = fidl::new_empty!(
8325                            fidl::encoding::EmptyPayload,
8326                            fidl::encoding::DefaultFuchsiaResourceDialect
8327                        );
8328                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8329                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8330                        Ok(SocketRequest::GetOriginalDestination {
8331                            responder: SocketGetOriginalDestinationResponder {
8332                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8333                                tx_id: header.tx_id,
8334                            },
8335                        })
8336                    }
8337                    0x335706eccf54a135 => {
8338                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8339                        let mut req = fidl::new_empty!(
8340                            fidl::encoding::EmptyPayload,
8341                            fidl::encoding::DefaultFuchsiaResourceDialect
8342                        );
8343                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8344                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8345                        Ok(SocketRequest::Describe {
8346                            responder: SocketDescribeResponder {
8347                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8348                                tx_id: header.tx_id,
8349                            },
8350                        })
8351                    }
8352                    0x1dfb695351d3aa1d => {
8353                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8354                        let mut req = fidl::new_empty!(
8355                            SocketRecvMsgRequest,
8356                            fidl::encoding::DefaultFuchsiaResourceDialect
8357                        );
8358                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8359                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8360                        Ok(SocketRequest::RecvMsg {
8361                            want_addr: req.want_addr,
8362                            data_len: req.data_len,
8363                            want_control: req.want_control,
8364                            flags: req.flags,
8365
8366                            responder: SocketRecvMsgResponder {
8367                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8368                                tx_id: header.tx_id,
8369                            },
8370                        })
8371                    }
8372                    0x2cf1eac9a7fc8958 => {
8373                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8374                        let mut req = fidl::new_empty!(
8375                            SocketSendMsgRequest,
8376                            fidl::encoding::DefaultFuchsiaResourceDialect
8377                        );
8378                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8379                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8380                        Ok(SocketRequest::SendMsg {
8381                            addr: req.addr,
8382                            data: req.data,
8383                            control: req.control,
8384                            flags: req.flags,
8385
8386                            responder: SocketSendMsgResponder {
8387                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8388                                tx_id: header.tx_id,
8389                            },
8390                        })
8391                    }
8392                    0x39676f75aec339ba => {
8393                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8394                        let mut req = fidl::new_empty!(
8395                            fidl::encoding::EmptyPayload,
8396                            fidl::encoding::DefaultFuchsiaResourceDialect
8397                        );
8398                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8399                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8400                        Ok(SocketRequest::GetInfo {
8401                            responder: SocketGetInfoResponder {
8402                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8403                                tx_id: header.tx_id,
8404                            },
8405                        })
8406                    }
8407                    0x5d06a606d95e8f3 => {
8408                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8409                        let mut req = fidl::new_empty!(
8410                            SocketSetIpHeaderIncludedRequest,
8411                            fidl::encoding::DefaultFuchsiaResourceDialect
8412                        );
8413                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8414                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8415                        Ok(SocketRequest::SetIpHeaderIncluded {
8416                            value: req.value,
8417
8418                            responder: SocketSetIpHeaderIncludedResponder {
8419                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8420                                tx_id: header.tx_id,
8421                            },
8422                        })
8423                    }
8424                    0x76125ad1f4d175f6 => {
8425                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8426                        let mut req = fidl::new_empty!(
8427                            fidl::encoding::EmptyPayload,
8428                            fidl::encoding::DefaultFuchsiaResourceDialect
8429                        );
8430                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8431                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8432                        Ok(SocketRequest::GetIpHeaderIncluded {
8433                            responder: SocketGetIpHeaderIncludedResponder {
8434                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8435                                tx_id: header.tx_id,
8436                            },
8437                        })
8438                    }
8439                    0x4ebea92a43ae68a9 => {
8440                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8441                        let mut req = fidl::new_empty!(
8442                            SocketSetIcmpv6FilterRequest,
8443                            fidl::encoding::DefaultFuchsiaResourceDialect
8444                        );
8445                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8446                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8447                        Ok(SocketRequest::SetIcmpv6Filter {
8448                            filter: req.filter,
8449
8450                            responder: SocketSetIcmpv6FilterResponder {
8451                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8452                                tx_id: header.tx_id,
8453                            },
8454                        })
8455                    }
8456                    0x43bd4f3bc0970ace => {
8457                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8458                        let mut req = fidl::new_empty!(
8459                            fidl::encoding::EmptyPayload,
8460                            fidl::encoding::DefaultFuchsiaResourceDialect
8461                        );
8462                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8463                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8464                        Ok(SocketRequest::GetIcmpv6Filter {
8465                            responder: SocketGetIcmpv6FilterResponder {
8466                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8467                                tx_id: header.tx_id,
8468                            },
8469                        })
8470                    }
8471                    0x18b7809577199cb4 => {
8472                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8473                        let mut req = fidl::new_empty!(
8474                            SocketSetIpv6ChecksumRequest,
8475                            fidl::encoding::DefaultFuchsiaResourceDialect
8476                        );
8477                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8478                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8479                        Ok(SocketRequest::SetIpv6Checksum {
8480                            config: req.config,
8481
8482                            responder: SocketSetIpv6ChecksumResponder {
8483                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8484                                tx_id: header.tx_id,
8485                            },
8486                        })
8487                    }
8488                    0x1847bf5b2d263dd => {
8489                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8490                        let mut req = fidl::new_empty!(
8491                            fidl::encoding::EmptyPayload,
8492                            fidl::encoding::DefaultFuchsiaResourceDialect
8493                        );
8494                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8495                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8496                        Ok(SocketRequest::GetIpv6Checksum {
8497                            responder: SocketGetIpv6ChecksumResponder {
8498                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8499                                tx_id: header.tx_id,
8500                            },
8501                        })
8502                    }
8503                    _ => Err(fidl::Error::UnknownOrdinal {
8504                        ordinal: header.ordinal,
8505                        protocol_name:
8506                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8507                    }),
8508                }))
8509            },
8510        )
8511    }
8512}
8513
8514/// A raw network socket.
8515///
8516/// Once a socket has been retrieved from a provider, this interface is then
8517/// used to further configure and use the socket. This interface is essentially
8518/// POSIX.
8519///
8520/// All methods on this type are nonblocking; their exact behaviors match their
8521/// Linux counterparts.
8522///
8523/// *Warning:* This protocol is not yet ready for direct use by clients.
8524/// Instead, clients should use the BSD sockets API to interact with sockets.
8525/// We plan to change this protocol substantially and clients that couple
8526/// directly to this protocol will make those changes more difficult.
8527#[derive(Debug)]
8528pub enum SocketRequest {
8529    Clone {
8530        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8531        control_handle: SocketControlHandle,
8532    },
8533    /// Terminates the connection.
8534    ///
8535    /// After calling `Close`, the client must not send any other requests.
8536    ///
8537    /// Servers, after sending the status response, should close the connection
8538    /// regardless of status and without sending an epitaph.
8539    ///
8540    /// Closing the client end of the channel should be semantically equivalent
8541    /// to calling `Close` without knowing when the close has completed or its
8542    /// status.
8543    Close {
8544        responder: SocketCloseResponder,
8545    },
8546    Query {
8547        responder: SocketQueryResponder,
8548    },
8549    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8550    SetReuseAddress {
8551        value: bool,
8552        responder: SocketSetReuseAddressResponder,
8553    },
8554    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8555    GetReuseAddress {
8556        responder: SocketGetReuseAddressResponder,
8557    },
8558    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8559    /// Returns the last error if there is an error set on the socket.
8560    GetError {
8561        responder: SocketGetErrorResponder,
8562    },
8563    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8564    SetBroadcast {
8565        value: bool,
8566        responder: SocketSetBroadcastResponder,
8567    },
8568    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8569    GetBroadcast {
8570        responder: SocketGetBroadcastResponder,
8571    },
8572    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8573    SetSendBuffer {
8574        value_bytes: u64,
8575        responder: SocketSetSendBufferResponder,
8576    },
8577    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8578    GetSendBuffer {
8579        responder: SocketGetSendBufferResponder,
8580    },
8581    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8582    SetReceiveBuffer {
8583        value_bytes: u64,
8584        responder: SocketSetReceiveBufferResponder,
8585    },
8586    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8587    GetReceiveBuffer {
8588        responder: SocketGetReceiveBufferResponder,
8589    },
8590    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8591    SetKeepAlive {
8592        value: bool,
8593        responder: SocketSetKeepAliveResponder,
8594    },
8595    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8596    GetKeepAlive {
8597        responder: SocketGetKeepAliveResponder,
8598    },
8599    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8600    SetOutOfBandInline {
8601        value: bool,
8602        responder: SocketSetOutOfBandInlineResponder,
8603    },
8604    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8605    GetOutOfBandInline {
8606        responder: SocketGetOutOfBandInlineResponder,
8607    },
8608    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8609    SetNoCheck {
8610        value: bool,
8611        responder: SocketSetNoCheckResponder,
8612    },
8613    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8614    GetNoCheck {
8615        responder: SocketGetNoCheckResponder,
8616    },
8617    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8618    SetLinger {
8619        linger: bool,
8620        length_secs: u32,
8621        responder: SocketSetLingerResponder,
8622    },
8623    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8624    GetLinger {
8625        responder: SocketGetLingerResponder,
8626    },
8627    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8628    SetReusePort {
8629        value: fidl_fuchsia_posix_socket::ReusePortOption,
8630        responder: SocketSetReusePortResponder,
8631    },
8632    SetReusePortDeprecated {
8633        value: bool,
8634        responder: SocketSetReusePortDeprecatedResponder,
8635    },
8636    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8637    GetReusePort {
8638        responder: SocketGetReusePortResponder,
8639    },
8640    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8641    GetAcceptConn {
8642        responder: SocketGetAcceptConnResponder,
8643    },
8644    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8645    SetBindToDevice {
8646        value: String,
8647        responder: SocketSetBindToDeviceResponder,
8648    },
8649    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8650    GetBindToDevice {
8651        responder: SocketGetBindToDeviceResponder,
8652    },
8653    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8654    /// If `value` is 0, this clears the bound interface.
8655    SetBindToInterfaceIndex {
8656        value: u64,
8657        responder: SocketSetBindToInterfaceIndexResponder,
8658    },
8659    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8660    GetBindToInterfaceIndex {
8661        responder: SocketGetBindToInterfaceIndexResponder,
8662    },
8663    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8664    SetTimestamp {
8665        value: fidl_fuchsia_posix_socket::TimestampOption,
8666        responder: SocketSetTimestampResponder,
8667    },
8668    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8669    GetTimestamp {
8670        responder: SocketGetTimestampResponder,
8671    },
8672    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8673    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8674    /// mark can be set independently in each domain.
8675    SetMark {
8676        domain: fidl_fuchsia_net::MarkDomain,
8677        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8678        responder: SocketSetMarkResponder,
8679    },
8680    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8681    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8682    /// mark can be retrieved independently in each domain.
8683    GetMark {
8684        domain: fidl_fuchsia_net::MarkDomain,
8685        responder: SocketGetMarkResponder,
8686    },
8687    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
8688    GetCookie {
8689        responder: SocketGetCookieResponder,
8690    },
8691    /// Sets the local address used for the socket.
8692    Bind {
8693        addr: fidl_fuchsia_net::SocketAddress,
8694        responder: SocketBindResponder,
8695    },
8696    /// Initiates a connection to a remote address.
8697    Connect {
8698        addr: fidl_fuchsia_net::SocketAddress,
8699        responder: SocketConnectResponder,
8700    },
8701    /// Clears connection information from this socket.
8702    Disconnect {
8703        responder: SocketDisconnectResponder,
8704    },
8705    /// Retrieves the local socket address.
8706    GetSockName {
8707        responder: SocketGetSockNameResponder,
8708    },
8709    /// Retrieves the remote socket address.
8710    GetPeerName {
8711        responder: SocketGetPeerNameResponder,
8712    },
8713    /// Shuts down part of the socket.
8714    Shutdown {
8715        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8716        responder: SocketShutdownResponder,
8717    },
8718    /// Set `SOL_IP` -> `IP_TOS`.
8719    SetIpTypeOfService {
8720        value: u8,
8721        responder: SocketSetIpTypeOfServiceResponder,
8722    },
8723    /// Get `SOL_IP` -> `IP_TOS`.
8724    GetIpTypeOfService {
8725        responder: SocketGetIpTypeOfServiceResponder,
8726    },
8727    /// Set `SOL_IP` -> `IP_TTL`.
8728    SetIpTtl {
8729        value: fidl_fuchsia_posix_socket::OptionalUint8,
8730        responder: SocketSetIpTtlResponder,
8731    },
8732    /// Get `SOL_IP` -> `IP_TTL`.
8733    GetIpTtl {
8734        responder: SocketGetIpTtlResponder,
8735    },
8736    /// Set `SOL_IP` -> `IP_PKTINFO`.
8737    SetIpPacketInfo {
8738        value: bool,
8739        responder: SocketSetIpPacketInfoResponder,
8740    },
8741    /// Get `SOL_IP` -> `IP_PKTINFO`.
8742    GetIpPacketInfo {
8743        responder: SocketGetIpPacketInfoResponder,
8744    },
8745    /// Set `SOL_IP` -> `IP_RECVTOS`.
8746    SetIpReceiveTypeOfService {
8747        value: bool,
8748        responder: SocketSetIpReceiveTypeOfServiceResponder,
8749    },
8750    /// Get `SOL_IP` -> `IP_RECVTOS`.
8751    GetIpReceiveTypeOfService {
8752        responder: SocketGetIpReceiveTypeOfServiceResponder,
8753    },
8754    /// Set `SOL_IP` -> `IP_RECVTTL`.
8755    SetIpReceiveTtl {
8756        value: bool,
8757        responder: SocketSetIpReceiveTtlResponder,
8758    },
8759    /// Get `SOL_IP` -> `IP_RECVTTL`.
8760    GetIpReceiveTtl {
8761        responder: SocketGetIpReceiveTtlResponder,
8762    },
8763    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8764    SetIpMulticastInterface {
8765        iface: u64,
8766        address: fidl_fuchsia_net::Ipv4Address,
8767        responder: SocketSetIpMulticastInterfaceResponder,
8768    },
8769    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8770    GetIpMulticastInterface {
8771        responder: SocketGetIpMulticastInterfaceResponder,
8772    },
8773    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8774    SetIpMulticastTtl {
8775        value: fidl_fuchsia_posix_socket::OptionalUint8,
8776        responder: SocketSetIpMulticastTtlResponder,
8777    },
8778    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8779    GetIpMulticastTtl {
8780        responder: SocketGetIpMulticastTtlResponder,
8781    },
8782    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8783    SetIpMulticastLoopback {
8784        value: bool,
8785        responder: SocketSetIpMulticastLoopbackResponder,
8786    },
8787    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8788    GetIpMulticastLoopback {
8789        responder: SocketGetIpMulticastLoopbackResponder,
8790    },
8791    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8792    AddIpMembership {
8793        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8794        responder: SocketAddIpMembershipResponder,
8795    },
8796    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8797    DropIpMembership {
8798        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8799        responder: SocketDropIpMembershipResponder,
8800    },
8801    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8802    SetIpTransparent {
8803        value: bool,
8804        responder: SocketSetIpTransparentResponder,
8805    },
8806    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8807    GetIpTransparent {
8808        responder: SocketGetIpTransparentResponder,
8809    },
8810    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8811    SetIpReceiveOriginalDestinationAddress {
8812        value: bool,
8813        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8814    },
8815    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8816    GetIpReceiveOriginalDestinationAddress {
8817        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8818    },
8819    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8820    AddIpv6Membership {
8821        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8822        responder: SocketAddIpv6MembershipResponder,
8823    },
8824    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8825    DropIpv6Membership {
8826        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8827        responder: SocketDropIpv6MembershipResponder,
8828    },
8829    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8830    SetIpv6MulticastInterface {
8831        value: u64,
8832        responder: SocketSetIpv6MulticastInterfaceResponder,
8833    },
8834    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8835    GetIpv6MulticastInterface {
8836        responder: SocketGetIpv6MulticastInterfaceResponder,
8837    },
8838    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8839    SetIpv6UnicastHops {
8840        value: fidl_fuchsia_posix_socket::OptionalUint8,
8841        responder: SocketSetIpv6UnicastHopsResponder,
8842    },
8843    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8844    GetIpv6UnicastHops {
8845        responder: SocketGetIpv6UnicastHopsResponder,
8846    },
8847    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8848    SetIpv6ReceiveHopLimit {
8849        value: bool,
8850        responder: SocketSetIpv6ReceiveHopLimitResponder,
8851    },
8852    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8853    GetIpv6ReceiveHopLimit {
8854        responder: SocketGetIpv6ReceiveHopLimitResponder,
8855    },
8856    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8857    SetIpv6MulticastHops {
8858        value: fidl_fuchsia_posix_socket::OptionalUint8,
8859        responder: SocketSetIpv6MulticastHopsResponder,
8860    },
8861    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8862    GetIpv6MulticastHops {
8863        responder: SocketGetIpv6MulticastHopsResponder,
8864    },
8865    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8866    SetIpv6MulticastLoopback {
8867        value: bool,
8868        responder: SocketSetIpv6MulticastLoopbackResponder,
8869    },
8870    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8871    GetIpv6MulticastLoopback {
8872        responder: SocketGetIpv6MulticastLoopbackResponder,
8873    },
8874    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8875    SetIpv6Only {
8876        value: bool,
8877        responder: SocketSetIpv6OnlyResponder,
8878    },
8879    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8880    GetIpv6Only {
8881        responder: SocketGetIpv6OnlyResponder,
8882    },
8883    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8884    SetIpv6ReceiveTrafficClass {
8885        value: bool,
8886        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8887    },
8888    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8889    GetIpv6ReceiveTrafficClass {
8890        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8891    },
8892    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8893    SetIpv6TrafficClass {
8894        value: fidl_fuchsia_posix_socket::OptionalUint8,
8895        responder: SocketSetIpv6TrafficClassResponder,
8896    },
8897    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8898    GetIpv6TrafficClass {
8899        responder: SocketGetIpv6TrafficClassResponder,
8900    },
8901    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8902    SetIpv6ReceivePacketInfo {
8903        value: bool,
8904        responder: SocketSetIpv6ReceivePacketInfoResponder,
8905    },
8906    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8907    GetIpv6ReceivePacketInfo {
8908        responder: SocketGetIpv6ReceivePacketInfoResponder,
8909    },
8910    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8911    GetOriginalDestination {
8912        responder: SocketGetOriginalDestinationResponder,
8913    },
8914    Describe {
8915        responder: SocketDescribeResponder,
8916    },
8917    /// Receives a message from the socket.
8918    ///
8919    /// + request `want_addr` request message's source address information to
8920    ///   be returned.
8921    /// + request `data_len` the maximum allowed length of the response data
8922    ///   buffer.
8923    /// + request `want_control` request ancillary data to be returned.
8924    /// + request `flags` flags for the receive request.
8925    /// - response `addr` the message's source address information, if
8926    ///   requested.
8927    /// - response `data` the message.
8928    /// - response `control` control messages, if requested.
8929    /// - response `truncated` indicates whether or not the returned message
8930    ///   was truncated.
8931    RecvMsg {
8932        want_addr: bool,
8933        data_len: u32,
8934        want_control: bool,
8935        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8936        responder: SocketRecvMsgResponder,
8937    },
8938    /// Sends a message on the socket.
8939    ///
8940    /// + request `addr` the address to send the message to. If unset, will
8941    ///   send to the connected peer.
8942    /// + request `data` the message.
8943    /// + request `control` ancillary data.
8944    /// + request `flags` flags for the send request.
8945    SendMsg {
8946        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8947        data: Vec<u8>,
8948        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8949        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8950        responder: SocketSendMsgResponder,
8951    },
8952    /// Retrieves creation information from the socket.
8953    ///
8954    /// - response `domain` the socket's associated domain.
8955    /// - response `proto` the socket's associated protocol.
8956    GetInfo {
8957        responder: SocketGetInfoResponder,
8958    },
8959    /// Set `SOL_IP` -> `IP_HDRINCL`.
8960    SetIpHeaderIncluded {
8961        value: bool,
8962        responder: SocketSetIpHeaderIncludedResponder,
8963    },
8964    /// Get `SOL_IP` -> `IP_HDRINCL`.
8965    GetIpHeaderIncluded {
8966        responder: SocketGetIpHeaderIncludedResponder,
8967    },
8968    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8969    SetIcmpv6Filter {
8970        filter: Icmpv6Filter,
8971        responder: SocketSetIcmpv6FilterResponder,
8972    },
8973    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8974    GetIcmpv6Filter {
8975        responder: SocketGetIcmpv6FilterResponder,
8976    },
8977    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8978    SetIpv6Checksum {
8979        config: Ipv6ChecksumConfiguration,
8980        responder: SocketSetIpv6ChecksumResponder,
8981    },
8982    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8983    GetIpv6Checksum {
8984        responder: SocketGetIpv6ChecksumResponder,
8985    },
8986}
8987
8988impl SocketRequest {
8989    #[allow(irrefutable_let_patterns)]
8990    pub fn into_clone(
8991        self,
8992    ) -> Option<(
8993        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8994        SocketControlHandle,
8995    )> {
8996        if let SocketRequest::Clone { request, control_handle } = self {
8997            Some((request, control_handle))
8998        } else {
8999            None
9000        }
9001    }
9002
9003    #[allow(irrefutable_let_patterns)]
9004    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
9005        if let SocketRequest::Close { responder } = self { Some((responder)) } else { None }
9006    }
9007
9008    #[allow(irrefutable_let_patterns)]
9009    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
9010        if let SocketRequest::Query { responder } = self { Some((responder)) } else { None }
9011    }
9012
9013    #[allow(irrefutable_let_patterns)]
9014    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
9015        if let SocketRequest::SetReuseAddress { value, responder } = self {
9016            Some((value, responder))
9017        } else {
9018            None
9019        }
9020    }
9021
9022    #[allow(irrefutable_let_patterns)]
9023    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
9024        if let SocketRequest::GetReuseAddress { responder } = self {
9025            Some((responder))
9026        } else {
9027            None
9028        }
9029    }
9030
9031    #[allow(irrefutable_let_patterns)]
9032    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
9033        if let SocketRequest::GetError { responder } = self { Some((responder)) } else { None }
9034    }
9035
9036    #[allow(irrefutable_let_patterns)]
9037    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
9038        if let SocketRequest::SetBroadcast { value, responder } = self {
9039            Some((value, responder))
9040        } else {
9041            None
9042        }
9043    }
9044
9045    #[allow(irrefutable_let_patterns)]
9046    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
9047        if let SocketRequest::GetBroadcast { responder } = self { Some((responder)) } else { None }
9048    }
9049
9050    #[allow(irrefutable_let_patterns)]
9051    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
9052        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
9053            Some((value_bytes, responder))
9054        } else {
9055            None
9056        }
9057    }
9058
9059    #[allow(irrefutable_let_patterns)]
9060    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
9061        if let SocketRequest::GetSendBuffer { responder } = self { Some((responder)) } else { None }
9062    }
9063
9064    #[allow(irrefutable_let_patterns)]
9065    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
9066        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
9067            Some((value_bytes, responder))
9068        } else {
9069            None
9070        }
9071    }
9072
9073    #[allow(irrefutable_let_patterns)]
9074    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
9075        if let SocketRequest::GetReceiveBuffer { responder } = self {
9076            Some((responder))
9077        } else {
9078            None
9079        }
9080    }
9081
9082    #[allow(irrefutable_let_patterns)]
9083    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
9084        if let SocketRequest::SetKeepAlive { value, responder } = self {
9085            Some((value, responder))
9086        } else {
9087            None
9088        }
9089    }
9090
9091    #[allow(irrefutable_let_patterns)]
9092    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
9093        if let SocketRequest::GetKeepAlive { responder } = self { Some((responder)) } else { None }
9094    }
9095
9096    #[allow(irrefutable_let_patterns)]
9097    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
9098        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
9099            Some((value, responder))
9100        } else {
9101            None
9102        }
9103    }
9104
9105    #[allow(irrefutable_let_patterns)]
9106    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
9107        if let SocketRequest::GetOutOfBandInline { responder } = self {
9108            Some((responder))
9109        } else {
9110            None
9111        }
9112    }
9113
9114    #[allow(irrefutable_let_patterns)]
9115    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
9116        if let SocketRequest::SetNoCheck { value, responder } = self {
9117            Some((value, responder))
9118        } else {
9119            None
9120        }
9121    }
9122
9123    #[allow(irrefutable_let_patterns)]
9124    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
9125        if let SocketRequest::GetNoCheck { responder } = self { Some((responder)) } else { None }
9126    }
9127
9128    #[allow(irrefutable_let_patterns)]
9129    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
9130        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
9131            Some((linger, length_secs, responder))
9132        } else {
9133            None
9134        }
9135    }
9136
9137    #[allow(irrefutable_let_patterns)]
9138    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
9139        if let SocketRequest::GetLinger { responder } = self { Some((responder)) } else { None }
9140    }
9141
9142    #[allow(irrefutable_let_patterns)]
9143    pub fn into_set_reuse_port(
9144        self,
9145    ) -> Option<(fidl_fuchsia_posix_socket::ReusePortOption, SocketSetReusePortResponder)> {
9146        if let SocketRequest::SetReusePort { value, responder } = self {
9147            Some((value, responder))
9148        } else {
9149            None
9150        }
9151    }
9152
9153    #[allow(irrefutable_let_patterns)]
9154    pub fn into_set_reuse_port_deprecated(
9155        self,
9156    ) -> Option<(bool, SocketSetReusePortDeprecatedResponder)> {
9157        if let SocketRequest::SetReusePortDeprecated { value, responder } = self {
9158            Some((value, responder))
9159        } else {
9160            None
9161        }
9162    }
9163
9164    #[allow(irrefutable_let_patterns)]
9165    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
9166        if let SocketRequest::GetReusePort { responder } = self { Some((responder)) } else { None }
9167    }
9168
9169    #[allow(irrefutable_let_patterns)]
9170    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
9171        if let SocketRequest::GetAcceptConn { responder } = self { Some((responder)) } else { None }
9172    }
9173
9174    #[allow(irrefutable_let_patterns)]
9175    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
9176        if let SocketRequest::SetBindToDevice { value, responder } = self {
9177            Some((value, responder))
9178        } else {
9179            None
9180        }
9181    }
9182
9183    #[allow(irrefutable_let_patterns)]
9184    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
9185        if let SocketRequest::GetBindToDevice { responder } = self {
9186            Some((responder))
9187        } else {
9188            None
9189        }
9190    }
9191
9192    #[allow(irrefutable_let_patterns)]
9193    pub fn into_set_bind_to_interface_index(
9194        self,
9195    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
9196        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
9197            Some((value, responder))
9198        } else {
9199            None
9200        }
9201    }
9202
9203    #[allow(irrefutable_let_patterns)]
9204    pub fn into_get_bind_to_interface_index(
9205        self,
9206    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
9207        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
9208            Some((responder))
9209        } else {
9210            None
9211        }
9212    }
9213
9214    #[allow(irrefutable_let_patterns)]
9215    pub fn into_set_timestamp(
9216        self,
9217    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
9218        if let SocketRequest::SetTimestamp { value, responder } = self {
9219            Some((value, responder))
9220        } else {
9221            None
9222        }
9223    }
9224
9225    #[allow(irrefutable_let_patterns)]
9226    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9227        if let SocketRequest::GetTimestamp { responder } = self { Some((responder)) } else { None }
9228    }
9229
9230    #[allow(irrefutable_let_patterns)]
9231    pub fn into_set_mark(
9232        self,
9233    ) -> Option<(
9234        fidl_fuchsia_net::MarkDomain,
9235        fidl_fuchsia_posix_socket::OptionalUint32,
9236        SocketSetMarkResponder,
9237    )> {
9238        if let SocketRequest::SetMark { domain, mark, responder } = self {
9239            Some((domain, mark, responder))
9240        } else {
9241            None
9242        }
9243    }
9244
9245    #[allow(irrefutable_let_patterns)]
9246    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9247        if let SocketRequest::GetMark { domain, responder } = self {
9248            Some((domain, responder))
9249        } else {
9250            None
9251        }
9252    }
9253
9254    #[allow(irrefutable_let_patterns)]
9255    pub fn into_get_cookie(self) -> Option<(SocketGetCookieResponder)> {
9256        if let SocketRequest::GetCookie { responder } = self { Some((responder)) } else { None }
9257    }
9258
9259    #[allow(irrefutable_let_patterns)]
9260    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9261        if let SocketRequest::Bind { addr, responder } = self {
9262            Some((addr, responder))
9263        } else {
9264            None
9265        }
9266    }
9267
9268    #[allow(irrefutable_let_patterns)]
9269    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9270        if let SocketRequest::Connect { addr, responder } = self {
9271            Some((addr, responder))
9272        } else {
9273            None
9274        }
9275    }
9276
9277    #[allow(irrefutable_let_patterns)]
9278    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9279        if let SocketRequest::Disconnect { responder } = self { Some((responder)) } else { None }
9280    }
9281
9282    #[allow(irrefutable_let_patterns)]
9283    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9284        if let SocketRequest::GetSockName { responder } = self { Some((responder)) } else { None }
9285    }
9286
9287    #[allow(irrefutable_let_patterns)]
9288    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9289        if let SocketRequest::GetPeerName { responder } = self { Some((responder)) } else { None }
9290    }
9291
9292    #[allow(irrefutable_let_patterns)]
9293    pub fn into_shutdown(
9294        self,
9295    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9296        if let SocketRequest::Shutdown { mode, responder } = self {
9297            Some((mode, responder))
9298        } else {
9299            None
9300        }
9301    }
9302
9303    #[allow(irrefutable_let_patterns)]
9304    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9305        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9306            Some((value, responder))
9307        } else {
9308            None
9309        }
9310    }
9311
9312    #[allow(irrefutable_let_patterns)]
9313    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9314        if let SocketRequest::GetIpTypeOfService { responder } = self {
9315            Some((responder))
9316        } else {
9317            None
9318        }
9319    }
9320
9321    #[allow(irrefutable_let_patterns)]
9322    pub fn into_set_ip_ttl(
9323        self,
9324    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9325        if let SocketRequest::SetIpTtl { value, responder } = self {
9326            Some((value, responder))
9327        } else {
9328            None
9329        }
9330    }
9331
9332    #[allow(irrefutable_let_patterns)]
9333    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9334        if let SocketRequest::GetIpTtl { responder } = self { Some((responder)) } else { None }
9335    }
9336
9337    #[allow(irrefutable_let_patterns)]
9338    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9339        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9340            Some((value, responder))
9341        } else {
9342            None
9343        }
9344    }
9345
9346    #[allow(irrefutable_let_patterns)]
9347    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9348        if let SocketRequest::GetIpPacketInfo { responder } = self {
9349            Some((responder))
9350        } else {
9351            None
9352        }
9353    }
9354
9355    #[allow(irrefutable_let_patterns)]
9356    pub fn into_set_ip_receive_type_of_service(
9357        self,
9358    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9359        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9360            Some((value, responder))
9361        } else {
9362            None
9363        }
9364    }
9365
9366    #[allow(irrefutable_let_patterns)]
9367    pub fn into_get_ip_receive_type_of_service(
9368        self,
9369    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9370        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9371            Some((responder))
9372        } else {
9373            None
9374        }
9375    }
9376
9377    #[allow(irrefutable_let_patterns)]
9378    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9379        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9380            Some((value, responder))
9381        } else {
9382            None
9383        }
9384    }
9385
9386    #[allow(irrefutable_let_patterns)]
9387    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9388        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9389            Some((responder))
9390        } else {
9391            None
9392        }
9393    }
9394
9395    #[allow(irrefutable_let_patterns)]
9396    pub fn into_set_ip_multicast_interface(
9397        self,
9398    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9399        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9400            Some((iface, address, responder))
9401        } else {
9402            None
9403        }
9404    }
9405
9406    #[allow(irrefutable_let_patterns)]
9407    pub fn into_get_ip_multicast_interface(
9408        self,
9409    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9410        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9411            Some((responder))
9412        } else {
9413            None
9414        }
9415    }
9416
9417    #[allow(irrefutable_let_patterns)]
9418    pub fn into_set_ip_multicast_ttl(
9419        self,
9420    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9421        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9422            Some((value, responder))
9423        } else {
9424            None
9425        }
9426    }
9427
9428    #[allow(irrefutable_let_patterns)]
9429    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9430        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9431            Some((responder))
9432        } else {
9433            None
9434        }
9435    }
9436
9437    #[allow(irrefutable_let_patterns)]
9438    pub fn into_set_ip_multicast_loopback(
9439        self,
9440    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9441        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9442            Some((value, responder))
9443        } else {
9444            None
9445        }
9446    }
9447
9448    #[allow(irrefutable_let_patterns)]
9449    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9450        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9451            Some((responder))
9452        } else {
9453            None
9454        }
9455    }
9456
9457    #[allow(irrefutable_let_patterns)]
9458    pub fn into_add_ip_membership(
9459        self,
9460    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9461    {
9462        if let SocketRequest::AddIpMembership { membership, responder } = self {
9463            Some((membership, responder))
9464        } else {
9465            None
9466        }
9467    }
9468
9469    #[allow(irrefutable_let_patterns)]
9470    pub fn into_drop_ip_membership(
9471        self,
9472    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9473    {
9474        if let SocketRequest::DropIpMembership { membership, responder } = self {
9475            Some((membership, responder))
9476        } else {
9477            None
9478        }
9479    }
9480
9481    #[allow(irrefutable_let_patterns)]
9482    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9483        if let SocketRequest::SetIpTransparent { value, responder } = self {
9484            Some((value, responder))
9485        } else {
9486            None
9487        }
9488    }
9489
9490    #[allow(irrefutable_let_patterns)]
9491    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9492        if let SocketRequest::GetIpTransparent { responder } = self {
9493            Some((responder))
9494        } else {
9495            None
9496        }
9497    }
9498
9499    #[allow(irrefutable_let_patterns)]
9500    pub fn into_set_ip_receive_original_destination_address(
9501        self,
9502    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9503        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9504            Some((value, responder))
9505        } else {
9506            None
9507        }
9508    }
9509
9510    #[allow(irrefutable_let_patterns)]
9511    pub fn into_get_ip_receive_original_destination_address(
9512        self,
9513    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9514        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9515            Some((responder))
9516        } else {
9517            None
9518        }
9519    }
9520
9521    #[allow(irrefutable_let_patterns)]
9522    pub fn into_add_ipv6_membership(
9523        self,
9524    ) -> Option<(
9525        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9526        SocketAddIpv6MembershipResponder,
9527    )> {
9528        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9529            Some((membership, responder))
9530        } else {
9531            None
9532        }
9533    }
9534
9535    #[allow(irrefutable_let_patterns)]
9536    pub fn into_drop_ipv6_membership(
9537        self,
9538    ) -> Option<(
9539        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9540        SocketDropIpv6MembershipResponder,
9541    )> {
9542        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9543            Some((membership, responder))
9544        } else {
9545            None
9546        }
9547    }
9548
9549    #[allow(irrefutable_let_patterns)]
9550    pub fn into_set_ipv6_multicast_interface(
9551        self,
9552    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9553        if let SocketRequest::SetIpv6MulticastInterface { value, responder } = self {
9554            Some((value, responder))
9555        } else {
9556            None
9557        }
9558    }
9559
9560    #[allow(irrefutable_let_patterns)]
9561    pub fn into_get_ipv6_multicast_interface(
9562        self,
9563    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9564        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9565            Some((responder))
9566        } else {
9567            None
9568        }
9569    }
9570
9571    #[allow(irrefutable_let_patterns)]
9572    pub fn into_set_ipv6_unicast_hops(
9573        self,
9574    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9575        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9576            Some((value, responder))
9577        } else {
9578            None
9579        }
9580    }
9581
9582    #[allow(irrefutable_let_patterns)]
9583    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9584        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9585            Some((responder))
9586        } else {
9587            None
9588        }
9589    }
9590
9591    #[allow(irrefutable_let_patterns)]
9592    pub fn into_set_ipv6_receive_hop_limit(
9593        self,
9594    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9595        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9596            Some((value, responder))
9597        } else {
9598            None
9599        }
9600    }
9601
9602    #[allow(irrefutable_let_patterns)]
9603    pub fn into_get_ipv6_receive_hop_limit(
9604        self,
9605    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9606        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9607            Some((responder))
9608        } else {
9609            None
9610        }
9611    }
9612
9613    #[allow(irrefutable_let_patterns)]
9614    pub fn into_set_ipv6_multicast_hops(
9615        self,
9616    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9617    {
9618        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9619            Some((value, responder))
9620        } else {
9621            None
9622        }
9623    }
9624
9625    #[allow(irrefutable_let_patterns)]
9626    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9627        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9628            Some((responder))
9629        } else {
9630            None
9631        }
9632    }
9633
9634    #[allow(irrefutable_let_patterns)]
9635    pub fn into_set_ipv6_multicast_loopback(
9636        self,
9637    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9638        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9639            Some((value, responder))
9640        } else {
9641            None
9642        }
9643    }
9644
9645    #[allow(irrefutable_let_patterns)]
9646    pub fn into_get_ipv6_multicast_loopback(
9647        self,
9648    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9649        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9650            Some((responder))
9651        } else {
9652            None
9653        }
9654    }
9655
9656    #[allow(irrefutable_let_patterns)]
9657    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9658        if let SocketRequest::SetIpv6Only { value, responder } = self {
9659            Some((value, responder))
9660        } else {
9661            None
9662        }
9663    }
9664
9665    #[allow(irrefutable_let_patterns)]
9666    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9667        if let SocketRequest::GetIpv6Only { responder } = self { Some((responder)) } else { None }
9668    }
9669
9670    #[allow(irrefutable_let_patterns)]
9671    pub fn into_set_ipv6_receive_traffic_class(
9672        self,
9673    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9674        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9675            Some((value, responder))
9676        } else {
9677            None
9678        }
9679    }
9680
9681    #[allow(irrefutable_let_patterns)]
9682    pub fn into_get_ipv6_receive_traffic_class(
9683        self,
9684    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9685        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9686            Some((responder))
9687        } else {
9688            None
9689        }
9690    }
9691
9692    #[allow(irrefutable_let_patterns)]
9693    pub fn into_set_ipv6_traffic_class(
9694        self,
9695    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9696    {
9697        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9698            Some((value, responder))
9699        } else {
9700            None
9701        }
9702    }
9703
9704    #[allow(irrefutable_let_patterns)]
9705    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9706        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9707            Some((responder))
9708        } else {
9709            None
9710        }
9711    }
9712
9713    #[allow(irrefutable_let_patterns)]
9714    pub fn into_set_ipv6_receive_packet_info(
9715        self,
9716    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9717        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9718            Some((value, responder))
9719        } else {
9720            None
9721        }
9722    }
9723
9724    #[allow(irrefutable_let_patterns)]
9725    pub fn into_get_ipv6_receive_packet_info(
9726        self,
9727    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9728        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9729            Some((responder))
9730        } else {
9731            None
9732        }
9733    }
9734
9735    #[allow(irrefutable_let_patterns)]
9736    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9737        if let SocketRequest::GetOriginalDestination { responder } = self {
9738            Some((responder))
9739        } else {
9740            None
9741        }
9742    }
9743
9744    #[allow(irrefutable_let_patterns)]
9745    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9746        if let SocketRequest::Describe { responder } = self { Some((responder)) } else { None }
9747    }
9748
9749    #[allow(irrefutable_let_patterns)]
9750    pub fn into_recv_msg(
9751        self,
9752    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9753    {
9754        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9755        {
9756            Some((want_addr, data_len, want_control, flags, responder))
9757        } else {
9758            None
9759        }
9760    }
9761
9762    #[allow(irrefutable_let_patterns)]
9763    pub fn into_send_msg(
9764        self,
9765    ) -> Option<(
9766        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9767        Vec<u8>,
9768        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9769        fidl_fuchsia_posix_socket::SendMsgFlags,
9770        SocketSendMsgResponder,
9771    )> {
9772        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9773            Some((addr, data, control, flags, responder))
9774        } else {
9775            None
9776        }
9777    }
9778
9779    #[allow(irrefutable_let_patterns)]
9780    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9781        if let SocketRequest::GetInfo { responder } = self { Some((responder)) } else { None }
9782    }
9783
9784    #[allow(irrefutable_let_patterns)]
9785    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9786        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9787            Some((value, responder))
9788        } else {
9789            None
9790        }
9791    }
9792
9793    #[allow(irrefutable_let_patterns)]
9794    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9795        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9796            Some((responder))
9797        } else {
9798            None
9799        }
9800    }
9801
9802    #[allow(irrefutable_let_patterns)]
9803    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9804        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9805            Some((filter, responder))
9806        } else {
9807            None
9808        }
9809    }
9810
9811    #[allow(irrefutable_let_patterns)]
9812    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9813        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9814            Some((responder))
9815        } else {
9816            None
9817        }
9818    }
9819
9820    #[allow(irrefutable_let_patterns)]
9821    pub fn into_set_ipv6_checksum(
9822        self,
9823    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9824        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9825            Some((config, responder))
9826        } else {
9827            None
9828        }
9829    }
9830
9831    #[allow(irrefutable_let_patterns)]
9832    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9833        if let SocketRequest::GetIpv6Checksum { responder } = self {
9834            Some((responder))
9835        } else {
9836            None
9837        }
9838    }
9839
9840    /// Name of the method defined in FIDL
9841    pub fn method_name(&self) -> &'static str {
9842        match *self {
9843            SocketRequest::Clone { .. } => "clone",
9844            SocketRequest::Close { .. } => "close",
9845            SocketRequest::Query { .. } => "query",
9846            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9847            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9848            SocketRequest::GetError { .. } => "get_error",
9849            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9850            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9851            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9852            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9853            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9854            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9855            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9856            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9857            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9858            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9859            SocketRequest::SetNoCheck { .. } => "set_no_check",
9860            SocketRequest::GetNoCheck { .. } => "get_no_check",
9861            SocketRequest::SetLinger { .. } => "set_linger",
9862            SocketRequest::GetLinger { .. } => "get_linger",
9863            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9864            SocketRequest::SetReusePortDeprecated { .. } => "set_reuse_port_deprecated",
9865            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9866            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9867            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9868            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9869            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9870            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9871            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9872            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9873            SocketRequest::SetMark { .. } => "set_mark",
9874            SocketRequest::GetMark { .. } => "get_mark",
9875            SocketRequest::GetCookie { .. } => "get_cookie",
9876            SocketRequest::Bind { .. } => "bind",
9877            SocketRequest::Connect { .. } => "connect",
9878            SocketRequest::Disconnect { .. } => "disconnect",
9879            SocketRequest::GetSockName { .. } => "get_sock_name",
9880            SocketRequest::GetPeerName { .. } => "get_peer_name",
9881            SocketRequest::Shutdown { .. } => "shutdown",
9882            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9883            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9884            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9885            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9886            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9887            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9888            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9889            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9890            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9891            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9892            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9893            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9894            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9895            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9896            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9897            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9898            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9899            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9900            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9901            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9902            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9903                "set_ip_receive_original_destination_address"
9904            }
9905            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9906                "get_ip_receive_original_destination_address"
9907            }
9908            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9909            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9910            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9911            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9912            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9913            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9914            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9915            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9916            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9917            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9918            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9919            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9920            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9921            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9922            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9923            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9924            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9925            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9926            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9927            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9928            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9929            SocketRequest::Describe { .. } => "describe",
9930            SocketRequest::RecvMsg { .. } => "recv_msg",
9931            SocketRequest::SendMsg { .. } => "send_msg",
9932            SocketRequest::GetInfo { .. } => "get_info",
9933            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9934            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9935            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9936            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9937            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9938            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9939        }
9940    }
9941}
9942
9943#[derive(Debug, Clone)]
9944pub struct SocketControlHandle {
9945    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9946}
9947
9948impl fidl::endpoints::ControlHandle for SocketControlHandle {
9949    fn shutdown(&self) {
9950        self.inner.shutdown()
9951    }
9952
9953    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9954        self.inner.shutdown_with_epitaph(status)
9955    }
9956
9957    fn is_closed(&self) -> bool {
9958        self.inner.channel().is_closed()
9959    }
9960    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9961        self.inner.channel().on_closed()
9962    }
9963
9964    #[cfg(target_os = "fuchsia")]
9965    fn signal_peer(
9966        &self,
9967        clear_mask: zx::Signals,
9968        set_mask: zx::Signals,
9969    ) -> Result<(), zx_status::Status> {
9970        use fidl::Peered;
9971        self.inner.channel().signal_peer(clear_mask, set_mask)
9972    }
9973}
9974
9975impl SocketControlHandle {}
9976
9977#[must_use = "FIDL methods require a response to be sent"]
9978#[derive(Debug)]
9979pub struct SocketCloseResponder {
9980    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9981    tx_id: u32,
9982}
9983
9984/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9985/// if the responder is dropped without sending a response, so that the client
9986/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9987impl std::ops::Drop for SocketCloseResponder {
9988    fn drop(&mut self) {
9989        self.control_handle.shutdown();
9990        // Safety: drops once, never accessed again
9991        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9992    }
9993}
9994
9995impl fidl::endpoints::Responder for SocketCloseResponder {
9996    type ControlHandle = SocketControlHandle;
9997
9998    fn control_handle(&self) -> &SocketControlHandle {
9999        &self.control_handle
10000    }
10001
10002    fn drop_without_shutdown(mut self) {
10003        // Safety: drops once, never accessed again due to mem::forget
10004        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10005        // Prevent Drop from running (which would shut down the channel)
10006        std::mem::forget(self);
10007    }
10008}
10009
10010impl SocketCloseResponder {
10011    /// Sends a response to the FIDL transaction.
10012    ///
10013    /// Sets the channel to shutdown if an error occurs.
10014    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
10015        let _result = self.send_raw(result);
10016        if _result.is_err() {
10017            self.control_handle.shutdown();
10018        }
10019        self.drop_without_shutdown();
10020        _result
10021    }
10022
10023    /// Similar to "send" but does not shutdown the channel if an error occurs.
10024    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
10025        let _result = self.send_raw(result);
10026        self.drop_without_shutdown();
10027        _result
10028    }
10029
10030    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
10031        self.control_handle
10032            .inner
10033            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
10034                result,
10035                self.tx_id,
10036                0x5ac5d459ad7f657e,
10037                fidl::encoding::DynamicFlags::empty(),
10038            )
10039    }
10040}
10041
10042#[must_use = "FIDL methods require a response to be sent"]
10043#[derive(Debug)]
10044pub struct SocketQueryResponder {
10045    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10046    tx_id: u32,
10047}
10048
10049/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10050/// if the responder is dropped without sending a response, so that the client
10051/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10052impl std::ops::Drop for SocketQueryResponder {
10053    fn drop(&mut self) {
10054        self.control_handle.shutdown();
10055        // Safety: drops once, never accessed again
10056        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10057    }
10058}
10059
10060impl fidl::endpoints::Responder for SocketQueryResponder {
10061    type ControlHandle = SocketControlHandle;
10062
10063    fn control_handle(&self) -> &SocketControlHandle {
10064        &self.control_handle
10065    }
10066
10067    fn drop_without_shutdown(mut self) {
10068        // Safety: drops once, never accessed again due to mem::forget
10069        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10070        // Prevent Drop from running (which would shut down the channel)
10071        std::mem::forget(self);
10072    }
10073}
10074
10075impl SocketQueryResponder {
10076    /// Sends a response to the FIDL transaction.
10077    ///
10078    /// Sets the channel to shutdown if an error occurs.
10079    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
10080        let _result = self.send_raw(protocol);
10081        if _result.is_err() {
10082            self.control_handle.shutdown();
10083        }
10084        self.drop_without_shutdown();
10085        _result
10086    }
10087
10088    /// Similar to "send" but does not shutdown the channel if an error occurs.
10089    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
10090        let _result = self.send_raw(protocol);
10091        self.drop_without_shutdown();
10092        _result
10093    }
10094
10095    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
10096        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
10097            (protocol,),
10098            self.tx_id,
10099            0x2658edee9decfc06,
10100            fidl::encoding::DynamicFlags::empty(),
10101        )
10102    }
10103}
10104
10105#[must_use = "FIDL methods require a response to be sent"]
10106#[derive(Debug)]
10107pub struct SocketSetReuseAddressResponder {
10108    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10109    tx_id: u32,
10110}
10111
10112/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10113/// if the responder is dropped without sending a response, so that the client
10114/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10115impl std::ops::Drop for SocketSetReuseAddressResponder {
10116    fn drop(&mut self) {
10117        self.control_handle.shutdown();
10118        // Safety: drops once, never accessed again
10119        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10120    }
10121}
10122
10123impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
10124    type ControlHandle = SocketControlHandle;
10125
10126    fn control_handle(&self) -> &SocketControlHandle {
10127        &self.control_handle
10128    }
10129
10130    fn drop_without_shutdown(mut self) {
10131        // Safety: drops once, never accessed again due to mem::forget
10132        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10133        // Prevent Drop from running (which would shut down the channel)
10134        std::mem::forget(self);
10135    }
10136}
10137
10138impl SocketSetReuseAddressResponder {
10139    /// Sends a response to the FIDL transaction.
10140    ///
10141    /// Sets the channel to shutdown if an error occurs.
10142    pub fn send(
10143        self,
10144        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10145    ) -> Result<(), fidl::Error> {
10146        let _result = self.send_raw(result);
10147        if _result.is_err() {
10148            self.control_handle.shutdown();
10149        }
10150        self.drop_without_shutdown();
10151        _result
10152    }
10153
10154    /// Similar to "send" but does not shutdown the channel if an error occurs.
10155    pub fn send_no_shutdown_on_err(
10156        self,
10157        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10158    ) -> Result<(), fidl::Error> {
10159        let _result = self.send_raw(result);
10160        self.drop_without_shutdown();
10161        _result
10162    }
10163
10164    fn send_raw(
10165        &self,
10166        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10167    ) -> Result<(), fidl::Error> {
10168        self.control_handle.inner.send::<fidl::encoding::ResultType<
10169            fidl::encoding::EmptyStruct,
10170            fidl_fuchsia_posix::Errno,
10171        >>(
10172            result,
10173            self.tx_id,
10174            0x1fd74ee8b9a4a876,
10175            fidl::encoding::DynamicFlags::empty(),
10176        )
10177    }
10178}
10179
10180#[must_use = "FIDL methods require a response to be sent"]
10181#[derive(Debug)]
10182pub struct SocketGetReuseAddressResponder {
10183    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10184    tx_id: u32,
10185}
10186
10187/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10188/// if the responder is dropped without sending a response, so that the client
10189/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10190impl std::ops::Drop for SocketGetReuseAddressResponder {
10191    fn drop(&mut self) {
10192        self.control_handle.shutdown();
10193        // Safety: drops once, never accessed again
10194        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10195    }
10196}
10197
10198impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
10199    type ControlHandle = SocketControlHandle;
10200
10201    fn control_handle(&self) -> &SocketControlHandle {
10202        &self.control_handle
10203    }
10204
10205    fn drop_without_shutdown(mut self) {
10206        // Safety: drops once, never accessed again due to mem::forget
10207        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10208        // Prevent Drop from running (which would shut down the channel)
10209        std::mem::forget(self);
10210    }
10211}
10212
10213impl SocketGetReuseAddressResponder {
10214    /// Sends a response to the FIDL transaction.
10215    ///
10216    /// Sets the channel to shutdown if an error occurs.
10217    pub fn send(
10218        self,
10219        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10220    ) -> Result<(), fidl::Error> {
10221        let _result = self.send_raw(result);
10222        if _result.is_err() {
10223            self.control_handle.shutdown();
10224        }
10225        self.drop_without_shutdown();
10226        _result
10227    }
10228
10229    /// Similar to "send" but does not shutdown the channel if an error occurs.
10230    pub fn send_no_shutdown_on_err(
10231        self,
10232        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10233    ) -> Result<(), fidl::Error> {
10234        let _result = self.send_raw(result);
10235        self.drop_without_shutdown();
10236        _result
10237    }
10238
10239    fn send_raw(
10240        &self,
10241        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10242    ) -> Result<(), fidl::Error> {
10243        self.control_handle.inner.send::<fidl::encoding::ResultType<
10244            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10245            fidl_fuchsia_posix::Errno,
10246        >>(
10247            result.map(|value| (value,)),
10248            self.tx_id,
10249            0x67b7206b8d1bc0a5,
10250            fidl::encoding::DynamicFlags::empty(),
10251        )
10252    }
10253}
10254
10255#[must_use = "FIDL methods require a response to be sent"]
10256#[derive(Debug)]
10257pub struct SocketGetErrorResponder {
10258    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10259    tx_id: u32,
10260}
10261
10262/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10263/// if the responder is dropped without sending a response, so that the client
10264/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10265impl std::ops::Drop for SocketGetErrorResponder {
10266    fn drop(&mut self) {
10267        self.control_handle.shutdown();
10268        // Safety: drops once, never accessed again
10269        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10270    }
10271}
10272
10273impl fidl::endpoints::Responder for SocketGetErrorResponder {
10274    type ControlHandle = SocketControlHandle;
10275
10276    fn control_handle(&self) -> &SocketControlHandle {
10277        &self.control_handle
10278    }
10279
10280    fn drop_without_shutdown(mut self) {
10281        // Safety: drops once, never accessed again due to mem::forget
10282        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10283        // Prevent Drop from running (which would shut down the channel)
10284        std::mem::forget(self);
10285    }
10286}
10287
10288impl SocketGetErrorResponder {
10289    /// Sends a response to the FIDL transaction.
10290    ///
10291    /// Sets the channel to shutdown if an error occurs.
10292    pub fn send(
10293        self,
10294        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10295    ) -> Result<(), fidl::Error> {
10296        let _result = self.send_raw(result);
10297        if _result.is_err() {
10298            self.control_handle.shutdown();
10299        }
10300        self.drop_without_shutdown();
10301        _result
10302    }
10303
10304    /// Similar to "send" but does not shutdown the channel if an error occurs.
10305    pub fn send_no_shutdown_on_err(
10306        self,
10307        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10308    ) -> Result<(), fidl::Error> {
10309        let _result = self.send_raw(result);
10310        self.drop_without_shutdown();
10311        _result
10312    }
10313
10314    fn send_raw(
10315        &self,
10316        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10317    ) -> Result<(), fidl::Error> {
10318        self.control_handle.inner.send::<fidl::encoding::ResultType<
10319            fidl::encoding::EmptyStruct,
10320            fidl_fuchsia_posix::Errno,
10321        >>(
10322            result,
10323            self.tx_id,
10324            0x5aad39b33e5f6ebb,
10325            fidl::encoding::DynamicFlags::empty(),
10326        )
10327    }
10328}
10329
10330#[must_use = "FIDL methods require a response to be sent"]
10331#[derive(Debug)]
10332pub struct SocketSetBroadcastResponder {
10333    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10334    tx_id: u32,
10335}
10336
10337/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10338/// if the responder is dropped without sending a response, so that the client
10339/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10340impl std::ops::Drop for SocketSetBroadcastResponder {
10341    fn drop(&mut self) {
10342        self.control_handle.shutdown();
10343        // Safety: drops once, never accessed again
10344        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10345    }
10346}
10347
10348impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10349    type ControlHandle = SocketControlHandle;
10350
10351    fn control_handle(&self) -> &SocketControlHandle {
10352        &self.control_handle
10353    }
10354
10355    fn drop_without_shutdown(mut self) {
10356        // Safety: drops once, never accessed again due to mem::forget
10357        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10358        // Prevent Drop from running (which would shut down the channel)
10359        std::mem::forget(self);
10360    }
10361}
10362
10363impl SocketSetBroadcastResponder {
10364    /// Sends a response to the FIDL transaction.
10365    ///
10366    /// Sets the channel to shutdown if an error occurs.
10367    pub fn send(
10368        self,
10369        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10370    ) -> Result<(), fidl::Error> {
10371        let _result = self.send_raw(result);
10372        if _result.is_err() {
10373            self.control_handle.shutdown();
10374        }
10375        self.drop_without_shutdown();
10376        _result
10377    }
10378
10379    /// Similar to "send" but does not shutdown the channel if an error occurs.
10380    pub fn send_no_shutdown_on_err(
10381        self,
10382        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10383    ) -> Result<(), fidl::Error> {
10384        let _result = self.send_raw(result);
10385        self.drop_without_shutdown();
10386        _result
10387    }
10388
10389    fn send_raw(
10390        &self,
10391        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10392    ) -> Result<(), fidl::Error> {
10393        self.control_handle.inner.send::<fidl::encoding::ResultType<
10394            fidl::encoding::EmptyStruct,
10395            fidl_fuchsia_posix::Errno,
10396        >>(
10397            result,
10398            self.tx_id,
10399            0x6023e081ce3cd947,
10400            fidl::encoding::DynamicFlags::empty(),
10401        )
10402    }
10403}
10404
10405#[must_use = "FIDL methods require a response to be sent"]
10406#[derive(Debug)]
10407pub struct SocketGetBroadcastResponder {
10408    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10409    tx_id: u32,
10410}
10411
10412/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10413/// if the responder is dropped without sending a response, so that the client
10414/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10415impl std::ops::Drop for SocketGetBroadcastResponder {
10416    fn drop(&mut self) {
10417        self.control_handle.shutdown();
10418        // Safety: drops once, never accessed again
10419        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10420    }
10421}
10422
10423impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10424    type ControlHandle = SocketControlHandle;
10425
10426    fn control_handle(&self) -> &SocketControlHandle {
10427        &self.control_handle
10428    }
10429
10430    fn drop_without_shutdown(mut self) {
10431        // Safety: drops once, never accessed again due to mem::forget
10432        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10433        // Prevent Drop from running (which would shut down the channel)
10434        std::mem::forget(self);
10435    }
10436}
10437
10438impl SocketGetBroadcastResponder {
10439    /// Sends a response to the FIDL transaction.
10440    ///
10441    /// Sets the channel to shutdown if an error occurs.
10442    pub fn send(
10443        self,
10444        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10445    ) -> Result<(), fidl::Error> {
10446        let _result = self.send_raw(result);
10447        if _result.is_err() {
10448            self.control_handle.shutdown();
10449        }
10450        self.drop_without_shutdown();
10451        _result
10452    }
10453
10454    /// Similar to "send" but does not shutdown the channel if an error occurs.
10455    pub fn send_no_shutdown_on_err(
10456        self,
10457        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10458    ) -> Result<(), fidl::Error> {
10459        let _result = self.send_raw(result);
10460        self.drop_without_shutdown();
10461        _result
10462    }
10463
10464    fn send_raw(
10465        &self,
10466        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10467    ) -> Result<(), fidl::Error> {
10468        self.control_handle.inner.send::<fidl::encoding::ResultType<
10469            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10470            fidl_fuchsia_posix::Errno,
10471        >>(
10472            result.map(|value| (value,)),
10473            self.tx_id,
10474            0x68796fc556f9780d,
10475            fidl::encoding::DynamicFlags::empty(),
10476        )
10477    }
10478}
10479
10480#[must_use = "FIDL methods require a response to be sent"]
10481#[derive(Debug)]
10482pub struct SocketSetSendBufferResponder {
10483    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10484    tx_id: u32,
10485}
10486
10487/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10488/// if the responder is dropped without sending a response, so that the client
10489/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10490impl std::ops::Drop for SocketSetSendBufferResponder {
10491    fn drop(&mut self) {
10492        self.control_handle.shutdown();
10493        // Safety: drops once, never accessed again
10494        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10495    }
10496}
10497
10498impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10499    type ControlHandle = SocketControlHandle;
10500
10501    fn control_handle(&self) -> &SocketControlHandle {
10502        &self.control_handle
10503    }
10504
10505    fn drop_without_shutdown(mut self) {
10506        // Safety: drops once, never accessed again due to mem::forget
10507        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10508        // Prevent Drop from running (which would shut down the channel)
10509        std::mem::forget(self);
10510    }
10511}
10512
10513impl SocketSetSendBufferResponder {
10514    /// Sends a response to the FIDL transaction.
10515    ///
10516    /// Sets the channel to shutdown if an error occurs.
10517    pub fn send(
10518        self,
10519        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10520    ) -> Result<(), fidl::Error> {
10521        let _result = self.send_raw(result);
10522        if _result.is_err() {
10523            self.control_handle.shutdown();
10524        }
10525        self.drop_without_shutdown();
10526        _result
10527    }
10528
10529    /// Similar to "send" but does not shutdown the channel if an error occurs.
10530    pub fn send_no_shutdown_on_err(
10531        self,
10532        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10533    ) -> Result<(), fidl::Error> {
10534        let _result = self.send_raw(result);
10535        self.drop_without_shutdown();
10536        _result
10537    }
10538
10539    fn send_raw(
10540        &self,
10541        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10542    ) -> Result<(), fidl::Error> {
10543        self.control_handle.inner.send::<fidl::encoding::ResultType<
10544            fidl::encoding::EmptyStruct,
10545            fidl_fuchsia_posix::Errno,
10546        >>(
10547            result,
10548            self.tx_id,
10549            0x756eac32d73a7a70,
10550            fidl::encoding::DynamicFlags::empty(),
10551        )
10552    }
10553}
10554
10555#[must_use = "FIDL methods require a response to be sent"]
10556#[derive(Debug)]
10557pub struct SocketGetSendBufferResponder {
10558    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10559    tx_id: u32,
10560}
10561
10562/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10563/// if the responder is dropped without sending a response, so that the client
10564/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10565impl std::ops::Drop for SocketGetSendBufferResponder {
10566    fn drop(&mut self) {
10567        self.control_handle.shutdown();
10568        // Safety: drops once, never accessed again
10569        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10570    }
10571}
10572
10573impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10574    type ControlHandle = SocketControlHandle;
10575
10576    fn control_handle(&self) -> &SocketControlHandle {
10577        &self.control_handle
10578    }
10579
10580    fn drop_without_shutdown(mut self) {
10581        // Safety: drops once, never accessed again due to mem::forget
10582        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10583        // Prevent Drop from running (which would shut down the channel)
10584        std::mem::forget(self);
10585    }
10586}
10587
10588impl SocketGetSendBufferResponder {
10589    /// Sends a response to the FIDL transaction.
10590    ///
10591    /// Sets the channel to shutdown if an error occurs.
10592    pub fn send(
10593        self,
10594        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10595    ) -> Result<(), fidl::Error> {
10596        let _result = self.send_raw(result);
10597        if _result.is_err() {
10598            self.control_handle.shutdown();
10599        }
10600        self.drop_without_shutdown();
10601        _result
10602    }
10603
10604    /// Similar to "send" but does not shutdown the channel if an error occurs.
10605    pub fn send_no_shutdown_on_err(
10606        self,
10607        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10608    ) -> Result<(), fidl::Error> {
10609        let _result = self.send_raw(result);
10610        self.drop_without_shutdown();
10611        _result
10612    }
10613
10614    fn send_raw(
10615        &self,
10616        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10617    ) -> Result<(), fidl::Error> {
10618        self.control_handle.inner.send::<fidl::encoding::ResultType<
10619            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10620            fidl_fuchsia_posix::Errno,
10621        >>(
10622            result.map(|value_bytes| (value_bytes,)),
10623            self.tx_id,
10624            0x78a52fd9c7b2410b,
10625            fidl::encoding::DynamicFlags::empty(),
10626        )
10627    }
10628}
10629
10630#[must_use = "FIDL methods require a response to be sent"]
10631#[derive(Debug)]
10632pub struct SocketSetReceiveBufferResponder {
10633    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10634    tx_id: u32,
10635}
10636
10637/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10638/// if the responder is dropped without sending a response, so that the client
10639/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10640impl std::ops::Drop for SocketSetReceiveBufferResponder {
10641    fn drop(&mut self) {
10642        self.control_handle.shutdown();
10643        // Safety: drops once, never accessed again
10644        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10645    }
10646}
10647
10648impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10649    type ControlHandle = SocketControlHandle;
10650
10651    fn control_handle(&self) -> &SocketControlHandle {
10652        &self.control_handle
10653    }
10654
10655    fn drop_without_shutdown(mut self) {
10656        // Safety: drops once, never accessed again due to mem::forget
10657        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10658        // Prevent Drop from running (which would shut down the channel)
10659        std::mem::forget(self);
10660    }
10661}
10662
10663impl SocketSetReceiveBufferResponder {
10664    /// Sends a response to the FIDL transaction.
10665    ///
10666    /// Sets the channel to shutdown if an error occurs.
10667    pub fn send(
10668        self,
10669        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10670    ) -> Result<(), fidl::Error> {
10671        let _result = self.send_raw(result);
10672        if _result.is_err() {
10673            self.control_handle.shutdown();
10674        }
10675        self.drop_without_shutdown();
10676        _result
10677    }
10678
10679    /// Similar to "send" but does not shutdown the channel if an error occurs.
10680    pub fn send_no_shutdown_on_err(
10681        self,
10682        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10683    ) -> Result<(), fidl::Error> {
10684        let _result = self.send_raw(result);
10685        self.drop_without_shutdown();
10686        _result
10687    }
10688
10689    fn send_raw(
10690        &self,
10691        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10692    ) -> Result<(), fidl::Error> {
10693        self.control_handle.inner.send::<fidl::encoding::ResultType<
10694            fidl::encoding::EmptyStruct,
10695            fidl_fuchsia_posix::Errno,
10696        >>(
10697            result,
10698            self.tx_id,
10699            0x6b0cf2f1919c7001,
10700            fidl::encoding::DynamicFlags::empty(),
10701        )
10702    }
10703}
10704
10705#[must_use = "FIDL methods require a response to be sent"]
10706#[derive(Debug)]
10707pub struct SocketGetReceiveBufferResponder {
10708    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10709    tx_id: u32,
10710}
10711
10712/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10713/// if the responder is dropped without sending a response, so that the client
10714/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10715impl std::ops::Drop for SocketGetReceiveBufferResponder {
10716    fn drop(&mut self) {
10717        self.control_handle.shutdown();
10718        // Safety: drops once, never accessed again
10719        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10720    }
10721}
10722
10723impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10724    type ControlHandle = SocketControlHandle;
10725
10726    fn control_handle(&self) -> &SocketControlHandle {
10727        &self.control_handle
10728    }
10729
10730    fn drop_without_shutdown(mut self) {
10731        // Safety: drops once, never accessed again due to mem::forget
10732        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10733        // Prevent Drop from running (which would shut down the channel)
10734        std::mem::forget(self);
10735    }
10736}
10737
10738impl SocketGetReceiveBufferResponder {
10739    /// Sends a response to the FIDL transaction.
10740    ///
10741    /// Sets the channel to shutdown if an error occurs.
10742    pub fn send(
10743        self,
10744        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10745    ) -> Result<(), fidl::Error> {
10746        let _result = self.send_raw(result);
10747        if _result.is_err() {
10748            self.control_handle.shutdown();
10749        }
10750        self.drop_without_shutdown();
10751        _result
10752    }
10753
10754    /// Similar to "send" but does not shutdown the channel if an error occurs.
10755    pub fn send_no_shutdown_on_err(
10756        self,
10757        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10758    ) -> Result<(), fidl::Error> {
10759        let _result = self.send_raw(result);
10760        self.drop_without_shutdown();
10761        _result
10762    }
10763
10764    fn send_raw(
10765        &self,
10766        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10767    ) -> Result<(), fidl::Error> {
10768        self.control_handle.inner.send::<fidl::encoding::ResultType<
10769            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10770            fidl_fuchsia_posix::Errno,
10771        >>(
10772            result.map(|value_bytes| (value_bytes,)),
10773            self.tx_id,
10774            0x14c1a4b64f709e5c,
10775            fidl::encoding::DynamicFlags::empty(),
10776        )
10777    }
10778}
10779
10780#[must_use = "FIDL methods require a response to be sent"]
10781#[derive(Debug)]
10782pub struct SocketSetKeepAliveResponder {
10783    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10784    tx_id: u32,
10785}
10786
10787/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10788/// if the responder is dropped without sending a response, so that the client
10789/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10790impl std::ops::Drop for SocketSetKeepAliveResponder {
10791    fn drop(&mut self) {
10792        self.control_handle.shutdown();
10793        // Safety: drops once, never accessed again
10794        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10795    }
10796}
10797
10798impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10799    type ControlHandle = SocketControlHandle;
10800
10801    fn control_handle(&self) -> &SocketControlHandle {
10802        &self.control_handle
10803    }
10804
10805    fn drop_without_shutdown(mut self) {
10806        // Safety: drops once, never accessed again due to mem::forget
10807        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10808        // Prevent Drop from running (which would shut down the channel)
10809        std::mem::forget(self);
10810    }
10811}
10812
10813impl SocketSetKeepAliveResponder {
10814    /// Sends a response to the FIDL transaction.
10815    ///
10816    /// Sets the channel to shutdown if an error occurs.
10817    pub fn send(
10818        self,
10819        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10820    ) -> Result<(), fidl::Error> {
10821        let _result = self.send_raw(result);
10822        if _result.is_err() {
10823            self.control_handle.shutdown();
10824        }
10825        self.drop_without_shutdown();
10826        _result
10827    }
10828
10829    /// Similar to "send" but does not shutdown the channel if an error occurs.
10830    pub fn send_no_shutdown_on_err(
10831        self,
10832        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10833    ) -> Result<(), fidl::Error> {
10834        let _result = self.send_raw(result);
10835        self.drop_without_shutdown();
10836        _result
10837    }
10838
10839    fn send_raw(
10840        &self,
10841        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10842    ) -> Result<(), fidl::Error> {
10843        self.control_handle.inner.send::<fidl::encoding::ResultType<
10844            fidl::encoding::EmptyStruct,
10845            fidl_fuchsia_posix::Errno,
10846        >>(
10847            result,
10848            self.tx_id,
10849            0x572df8f0b920d2c7,
10850            fidl::encoding::DynamicFlags::empty(),
10851        )
10852    }
10853}
10854
10855#[must_use = "FIDL methods require a response to be sent"]
10856#[derive(Debug)]
10857pub struct SocketGetKeepAliveResponder {
10858    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10859    tx_id: u32,
10860}
10861
10862/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10863/// if the responder is dropped without sending a response, so that the client
10864/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10865impl std::ops::Drop for SocketGetKeepAliveResponder {
10866    fn drop(&mut self) {
10867        self.control_handle.shutdown();
10868        // Safety: drops once, never accessed again
10869        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10870    }
10871}
10872
10873impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10874    type ControlHandle = SocketControlHandle;
10875
10876    fn control_handle(&self) -> &SocketControlHandle {
10877        &self.control_handle
10878    }
10879
10880    fn drop_without_shutdown(mut self) {
10881        // Safety: drops once, never accessed again due to mem::forget
10882        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10883        // Prevent Drop from running (which would shut down the channel)
10884        std::mem::forget(self);
10885    }
10886}
10887
10888impl SocketGetKeepAliveResponder {
10889    /// Sends a response to the FIDL transaction.
10890    ///
10891    /// Sets the channel to shutdown if an error occurs.
10892    pub fn send(
10893        self,
10894        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10895    ) -> Result<(), fidl::Error> {
10896        let _result = self.send_raw(result);
10897        if _result.is_err() {
10898            self.control_handle.shutdown();
10899        }
10900        self.drop_without_shutdown();
10901        _result
10902    }
10903
10904    /// Similar to "send" but does not shutdown the channel if an error occurs.
10905    pub fn send_no_shutdown_on_err(
10906        self,
10907        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10908    ) -> Result<(), fidl::Error> {
10909        let _result = self.send_raw(result);
10910        self.drop_without_shutdown();
10911        _result
10912    }
10913
10914    fn send_raw(
10915        &self,
10916        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10917    ) -> Result<(), fidl::Error> {
10918        self.control_handle.inner.send::<fidl::encoding::ResultType<
10919            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10920            fidl_fuchsia_posix::Errno,
10921        >>(
10922            result.map(|value| (value,)),
10923            self.tx_id,
10924            0x2dd29d3215f2c9d2,
10925            fidl::encoding::DynamicFlags::empty(),
10926        )
10927    }
10928}
10929
10930#[must_use = "FIDL methods require a response to be sent"]
10931#[derive(Debug)]
10932pub struct SocketSetOutOfBandInlineResponder {
10933    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10934    tx_id: u32,
10935}
10936
10937/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10938/// if the responder is dropped without sending a response, so that the client
10939/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10940impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10941    fn drop(&mut self) {
10942        self.control_handle.shutdown();
10943        // Safety: drops once, never accessed again
10944        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10945    }
10946}
10947
10948impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10949    type ControlHandle = SocketControlHandle;
10950
10951    fn control_handle(&self) -> &SocketControlHandle {
10952        &self.control_handle
10953    }
10954
10955    fn drop_without_shutdown(mut self) {
10956        // Safety: drops once, never accessed again due to mem::forget
10957        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10958        // Prevent Drop from running (which would shut down the channel)
10959        std::mem::forget(self);
10960    }
10961}
10962
10963impl SocketSetOutOfBandInlineResponder {
10964    /// Sends a response to the FIDL transaction.
10965    ///
10966    /// Sets the channel to shutdown if an error occurs.
10967    pub fn send(
10968        self,
10969        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10970    ) -> Result<(), fidl::Error> {
10971        let _result = self.send_raw(result);
10972        if _result.is_err() {
10973            self.control_handle.shutdown();
10974        }
10975        self.drop_without_shutdown();
10976        _result
10977    }
10978
10979    /// Similar to "send" but does not shutdown the channel if an error occurs.
10980    pub fn send_no_shutdown_on_err(
10981        self,
10982        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10983    ) -> Result<(), fidl::Error> {
10984        let _result = self.send_raw(result);
10985        self.drop_without_shutdown();
10986        _result
10987    }
10988
10989    fn send_raw(
10990        &self,
10991        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10992    ) -> Result<(), fidl::Error> {
10993        self.control_handle.inner.send::<fidl::encoding::ResultType<
10994            fidl::encoding::EmptyStruct,
10995            fidl_fuchsia_posix::Errno,
10996        >>(
10997            result,
10998            self.tx_id,
10999            0x3ecb49968bee439,
11000            fidl::encoding::DynamicFlags::empty(),
11001        )
11002    }
11003}
11004
11005#[must_use = "FIDL methods require a response to be sent"]
11006#[derive(Debug)]
11007pub struct SocketGetOutOfBandInlineResponder {
11008    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11009    tx_id: u32,
11010}
11011
11012/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11013/// if the responder is dropped without sending a response, so that the client
11014/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11015impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
11016    fn drop(&mut self) {
11017        self.control_handle.shutdown();
11018        // Safety: drops once, never accessed again
11019        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11020    }
11021}
11022
11023impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
11024    type ControlHandle = SocketControlHandle;
11025
11026    fn control_handle(&self) -> &SocketControlHandle {
11027        &self.control_handle
11028    }
11029
11030    fn drop_without_shutdown(mut self) {
11031        // Safety: drops once, never accessed again due to mem::forget
11032        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11033        // Prevent Drop from running (which would shut down the channel)
11034        std::mem::forget(self);
11035    }
11036}
11037
11038impl SocketGetOutOfBandInlineResponder {
11039    /// Sends a response to the FIDL transaction.
11040    ///
11041    /// Sets the channel to shutdown if an error occurs.
11042    pub fn send(
11043        self,
11044        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11045    ) -> Result<(), fidl::Error> {
11046        let _result = self.send_raw(result);
11047        if _result.is_err() {
11048            self.control_handle.shutdown();
11049        }
11050        self.drop_without_shutdown();
11051        _result
11052    }
11053
11054    /// Similar to "send" but does not shutdown the channel if an error occurs.
11055    pub fn send_no_shutdown_on_err(
11056        self,
11057        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11058    ) -> Result<(), fidl::Error> {
11059        let _result = self.send_raw(result);
11060        self.drop_without_shutdown();
11061        _result
11062    }
11063
11064    fn send_raw(
11065        &self,
11066        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11067    ) -> Result<(), fidl::Error> {
11068        self.control_handle.inner.send::<fidl::encoding::ResultType<
11069            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
11070            fidl_fuchsia_posix::Errno,
11071        >>(
11072            result.map(|value| (value,)),
11073            self.tx_id,
11074            0x348c1ab3aeca1745,
11075            fidl::encoding::DynamicFlags::empty(),
11076        )
11077    }
11078}
11079
11080#[must_use = "FIDL methods require a response to be sent"]
11081#[derive(Debug)]
11082pub struct SocketSetNoCheckResponder {
11083    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11084    tx_id: u32,
11085}
11086
11087/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11088/// if the responder is dropped without sending a response, so that the client
11089/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11090impl std::ops::Drop for SocketSetNoCheckResponder {
11091    fn drop(&mut self) {
11092        self.control_handle.shutdown();
11093        // Safety: drops once, never accessed again
11094        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11095    }
11096}
11097
11098impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
11099    type ControlHandle = SocketControlHandle;
11100
11101    fn control_handle(&self) -> &SocketControlHandle {
11102        &self.control_handle
11103    }
11104
11105    fn drop_without_shutdown(mut self) {
11106        // Safety: drops once, never accessed again due to mem::forget
11107        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11108        // Prevent Drop from running (which would shut down the channel)
11109        std::mem::forget(self);
11110    }
11111}
11112
11113impl SocketSetNoCheckResponder {
11114    /// Sends a response to the FIDL transaction.
11115    ///
11116    /// Sets the channel to shutdown if an error occurs.
11117    pub fn send(
11118        self,
11119        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11120    ) -> Result<(), fidl::Error> {
11121        let _result = self.send_raw(result);
11122        if _result.is_err() {
11123            self.control_handle.shutdown();
11124        }
11125        self.drop_without_shutdown();
11126        _result
11127    }
11128
11129    /// Similar to "send" but does not shutdown the channel if an error occurs.
11130    pub fn send_no_shutdown_on_err(
11131        self,
11132        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11133    ) -> Result<(), fidl::Error> {
11134        let _result = self.send_raw(result);
11135        self.drop_without_shutdown();
11136        _result
11137    }
11138
11139    fn send_raw(
11140        &self,
11141        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11142    ) -> Result<(), fidl::Error> {
11143        self.control_handle.inner.send::<fidl::encoding::ResultType<
11144            fidl::encoding::EmptyStruct,
11145            fidl_fuchsia_posix::Errno,
11146        >>(
11147            result,
11148            self.tx_id,
11149            0x6bbf00c53a4c78c2,
11150            fidl::encoding::DynamicFlags::empty(),
11151        )
11152    }
11153}
11154
11155#[must_use = "FIDL methods require a response to be sent"]
11156#[derive(Debug)]
11157pub struct SocketGetNoCheckResponder {
11158    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11159    tx_id: u32,
11160}
11161
11162/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11163/// if the responder is dropped without sending a response, so that the client
11164/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11165impl std::ops::Drop for SocketGetNoCheckResponder {
11166    fn drop(&mut self) {
11167        self.control_handle.shutdown();
11168        // Safety: drops once, never accessed again
11169        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11170    }
11171}
11172
11173impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
11174    type ControlHandle = SocketControlHandle;
11175
11176    fn control_handle(&self) -> &SocketControlHandle {
11177        &self.control_handle
11178    }
11179
11180    fn drop_without_shutdown(mut self) {
11181        // Safety: drops once, never accessed again due to mem::forget
11182        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11183        // Prevent Drop from running (which would shut down the channel)
11184        std::mem::forget(self);
11185    }
11186}
11187
11188impl SocketGetNoCheckResponder {
11189    /// Sends a response to the FIDL transaction.
11190    ///
11191    /// Sets the channel to shutdown if an error occurs.
11192    pub fn send(
11193        self,
11194        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11195    ) -> Result<(), fidl::Error> {
11196        let _result = self.send_raw(result);
11197        if _result.is_err() {
11198            self.control_handle.shutdown();
11199        }
11200        self.drop_without_shutdown();
11201        _result
11202    }
11203
11204    /// Similar to "send" but does not shutdown the channel if an error occurs.
11205    pub fn send_no_shutdown_on_err(
11206        self,
11207        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11208    ) -> Result<(), fidl::Error> {
11209        let _result = self.send_raw(result);
11210        self.drop_without_shutdown();
11211        _result
11212    }
11213
11214    fn send_raw(
11215        &self,
11216        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11217    ) -> Result<(), fidl::Error> {
11218        self.control_handle.inner.send::<fidl::encoding::ResultType<
11219            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
11220            fidl_fuchsia_posix::Errno,
11221        >>(
11222            result.map(|value| (value,)),
11223            self.tx_id,
11224            0x2cd4249286417694,
11225            fidl::encoding::DynamicFlags::empty(),
11226        )
11227    }
11228}
11229
11230#[must_use = "FIDL methods require a response to be sent"]
11231#[derive(Debug)]
11232pub struct SocketSetLingerResponder {
11233    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11234    tx_id: u32,
11235}
11236
11237/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11238/// if the responder is dropped without sending a response, so that the client
11239/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11240impl std::ops::Drop for SocketSetLingerResponder {
11241    fn drop(&mut self) {
11242        self.control_handle.shutdown();
11243        // Safety: drops once, never accessed again
11244        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11245    }
11246}
11247
11248impl fidl::endpoints::Responder for SocketSetLingerResponder {
11249    type ControlHandle = SocketControlHandle;
11250
11251    fn control_handle(&self) -> &SocketControlHandle {
11252        &self.control_handle
11253    }
11254
11255    fn drop_without_shutdown(mut self) {
11256        // Safety: drops once, never accessed again due to mem::forget
11257        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11258        // Prevent Drop from running (which would shut down the channel)
11259        std::mem::forget(self);
11260    }
11261}
11262
11263impl SocketSetLingerResponder {
11264    /// Sends a response to the FIDL transaction.
11265    ///
11266    /// Sets the channel to shutdown if an error occurs.
11267    pub fn send(
11268        self,
11269        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11270    ) -> Result<(), fidl::Error> {
11271        let _result = self.send_raw(result);
11272        if _result.is_err() {
11273            self.control_handle.shutdown();
11274        }
11275        self.drop_without_shutdown();
11276        _result
11277    }
11278
11279    /// Similar to "send" but does not shutdown the channel if an error occurs.
11280    pub fn send_no_shutdown_on_err(
11281        self,
11282        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11283    ) -> Result<(), fidl::Error> {
11284        let _result = self.send_raw(result);
11285        self.drop_without_shutdown();
11286        _result
11287    }
11288
11289    fn send_raw(
11290        &self,
11291        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11292    ) -> Result<(), fidl::Error> {
11293        self.control_handle.inner.send::<fidl::encoding::ResultType<
11294            fidl::encoding::EmptyStruct,
11295            fidl_fuchsia_posix::Errno,
11296        >>(
11297            result,
11298            self.tx_id,
11299            0x45386351246e998e,
11300            fidl::encoding::DynamicFlags::empty(),
11301        )
11302    }
11303}
11304
11305#[must_use = "FIDL methods require a response to be sent"]
11306#[derive(Debug)]
11307pub struct SocketGetLingerResponder {
11308    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11309    tx_id: u32,
11310}
11311
11312/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11313/// if the responder is dropped without sending a response, so that the client
11314/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11315impl std::ops::Drop for SocketGetLingerResponder {
11316    fn drop(&mut self) {
11317        self.control_handle.shutdown();
11318        // Safety: drops once, never accessed again
11319        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11320    }
11321}
11322
11323impl fidl::endpoints::Responder for SocketGetLingerResponder {
11324    type ControlHandle = SocketControlHandle;
11325
11326    fn control_handle(&self) -> &SocketControlHandle {
11327        &self.control_handle
11328    }
11329
11330    fn drop_without_shutdown(mut self) {
11331        // Safety: drops once, never accessed again due to mem::forget
11332        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11333        // Prevent Drop from running (which would shut down the channel)
11334        std::mem::forget(self);
11335    }
11336}
11337
11338impl SocketGetLingerResponder {
11339    /// Sends a response to the FIDL transaction.
11340    ///
11341    /// Sets the channel to shutdown if an error occurs.
11342    pub fn send(
11343        self,
11344        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11345    ) -> Result<(), fidl::Error> {
11346        let _result = self.send_raw(result);
11347        if _result.is_err() {
11348            self.control_handle.shutdown();
11349        }
11350        self.drop_without_shutdown();
11351        _result
11352    }
11353
11354    /// Similar to "send" but does not shutdown the channel if an error occurs.
11355    pub fn send_no_shutdown_on_err(
11356        self,
11357        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11358    ) -> Result<(), fidl::Error> {
11359        let _result = self.send_raw(result);
11360        self.drop_without_shutdown();
11361        _result
11362    }
11363
11364    fn send_raw(
11365        &self,
11366        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11367    ) -> Result<(), fidl::Error> {
11368        self.control_handle.inner.send::<fidl::encoding::ResultType<
11369            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11370            fidl_fuchsia_posix::Errno,
11371        >>(
11372            result,
11373            self.tx_id,
11374            0x48eb20fc5ccb0e45,
11375            fidl::encoding::DynamicFlags::empty(),
11376        )
11377    }
11378}
11379
11380#[must_use = "FIDL methods require a response to be sent"]
11381#[derive(Debug)]
11382pub struct SocketSetReusePortResponder {
11383    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11384    tx_id: u32,
11385}
11386
11387/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11388/// if the responder is dropped without sending a response, so that the client
11389/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11390impl std::ops::Drop for SocketSetReusePortResponder {
11391    fn drop(&mut self) {
11392        self.control_handle.shutdown();
11393        // Safety: drops once, never accessed again
11394        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11395    }
11396}
11397
11398impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11399    type ControlHandle = SocketControlHandle;
11400
11401    fn control_handle(&self) -> &SocketControlHandle {
11402        &self.control_handle
11403    }
11404
11405    fn drop_without_shutdown(mut self) {
11406        // Safety: drops once, never accessed again due to mem::forget
11407        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11408        // Prevent Drop from running (which would shut down the channel)
11409        std::mem::forget(self);
11410    }
11411}
11412
11413impl SocketSetReusePortResponder {
11414    /// Sends a response to the FIDL transaction.
11415    ///
11416    /// Sets the channel to shutdown if an error occurs.
11417    pub fn send(
11418        self,
11419        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11420    ) -> Result<(), fidl::Error> {
11421        let _result = self.send_raw(result);
11422        if _result.is_err() {
11423            self.control_handle.shutdown();
11424        }
11425        self.drop_without_shutdown();
11426        _result
11427    }
11428
11429    /// Similar to "send" but does not shutdown the channel if an error occurs.
11430    pub fn send_no_shutdown_on_err(
11431        self,
11432        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11433    ) -> Result<(), fidl::Error> {
11434        let _result = self.send_raw(result);
11435        self.drop_without_shutdown();
11436        _result
11437    }
11438
11439    fn send_raw(
11440        &self,
11441        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11442    ) -> Result<(), fidl::Error> {
11443        self.control_handle.inner.send::<fidl::encoding::ResultType<
11444            fidl::encoding::EmptyStruct,
11445            fidl_fuchsia_posix::Errno,
11446        >>(
11447            result,
11448            self.tx_id,
11449            0x547dc9cc0455189e,
11450            fidl::encoding::DynamicFlags::empty(),
11451        )
11452    }
11453}
11454
11455#[must_use = "FIDL methods require a response to be sent"]
11456#[derive(Debug)]
11457pub struct SocketSetReusePortDeprecatedResponder {
11458    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11459    tx_id: u32,
11460}
11461
11462/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11463/// if the responder is dropped without sending a response, so that the client
11464/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11465impl std::ops::Drop for SocketSetReusePortDeprecatedResponder {
11466    fn drop(&mut self) {
11467        self.control_handle.shutdown();
11468        // Safety: drops once, never accessed again
11469        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11470    }
11471}
11472
11473impl fidl::endpoints::Responder for SocketSetReusePortDeprecatedResponder {
11474    type ControlHandle = SocketControlHandle;
11475
11476    fn control_handle(&self) -> &SocketControlHandle {
11477        &self.control_handle
11478    }
11479
11480    fn drop_without_shutdown(mut self) {
11481        // Safety: drops once, never accessed again due to mem::forget
11482        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11483        // Prevent Drop from running (which would shut down the channel)
11484        std::mem::forget(self);
11485    }
11486}
11487
11488impl SocketSetReusePortDeprecatedResponder {
11489    /// Sends a response to the FIDL transaction.
11490    ///
11491    /// Sets the channel to shutdown if an error occurs.
11492    pub fn send(
11493        self,
11494        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11495    ) -> Result<(), fidl::Error> {
11496        let _result = self.send_raw(result);
11497        if _result.is_err() {
11498            self.control_handle.shutdown();
11499        }
11500        self.drop_without_shutdown();
11501        _result
11502    }
11503
11504    /// Similar to "send" but does not shutdown the channel if an error occurs.
11505    pub fn send_no_shutdown_on_err(
11506        self,
11507        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11508    ) -> Result<(), fidl::Error> {
11509        let _result = self.send_raw(result);
11510        self.drop_without_shutdown();
11511        _result
11512    }
11513
11514    fn send_raw(
11515        &self,
11516        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11517    ) -> Result<(), fidl::Error> {
11518        self.control_handle.inner.send::<fidl::encoding::ResultType<
11519            fidl::encoding::EmptyStruct,
11520            fidl_fuchsia_posix::Errno,
11521        >>(
11522            result,
11523            self.tx_id,
11524            0x24dd3e5cb36d9ccb,
11525            fidl::encoding::DynamicFlags::empty(),
11526        )
11527    }
11528}
11529
11530#[must_use = "FIDL methods require a response to be sent"]
11531#[derive(Debug)]
11532pub struct SocketGetReusePortResponder {
11533    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11534    tx_id: u32,
11535}
11536
11537/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11538/// if the responder is dropped without sending a response, so that the client
11539/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11540impl std::ops::Drop for SocketGetReusePortResponder {
11541    fn drop(&mut self) {
11542        self.control_handle.shutdown();
11543        // Safety: drops once, never accessed again
11544        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11545    }
11546}
11547
11548impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11549    type ControlHandle = SocketControlHandle;
11550
11551    fn control_handle(&self) -> &SocketControlHandle {
11552        &self.control_handle
11553    }
11554
11555    fn drop_without_shutdown(mut self) {
11556        // Safety: drops once, never accessed again due to mem::forget
11557        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11558        // Prevent Drop from running (which would shut down the channel)
11559        std::mem::forget(self);
11560    }
11561}
11562
11563impl SocketGetReusePortResponder {
11564    /// Sends a response to the FIDL transaction.
11565    ///
11566    /// Sets the channel to shutdown if an error occurs.
11567    pub fn send(
11568        self,
11569        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11570    ) -> Result<(), fidl::Error> {
11571        let _result = self.send_raw(result);
11572        if _result.is_err() {
11573            self.control_handle.shutdown();
11574        }
11575        self.drop_without_shutdown();
11576        _result
11577    }
11578
11579    /// Similar to "send" but does not shutdown the channel if an error occurs.
11580    pub fn send_no_shutdown_on_err(
11581        self,
11582        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11583    ) -> Result<(), fidl::Error> {
11584        let _result = self.send_raw(result);
11585        self.drop_without_shutdown();
11586        _result
11587    }
11588
11589    fn send_raw(
11590        &self,
11591        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11592    ) -> Result<(), fidl::Error> {
11593        self.control_handle.inner.send::<fidl::encoding::ResultType<
11594            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11595            fidl_fuchsia_posix::Errno,
11596        >>(
11597            result.map(|value| (value,)),
11598            self.tx_id,
11599            0x7a112c1ab54ff828,
11600            fidl::encoding::DynamicFlags::empty(),
11601        )
11602    }
11603}
11604
11605#[must_use = "FIDL methods require a response to be sent"]
11606#[derive(Debug)]
11607pub struct SocketGetAcceptConnResponder {
11608    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11609    tx_id: u32,
11610}
11611
11612/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11613/// if the responder is dropped without sending a response, so that the client
11614/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11615impl std::ops::Drop for SocketGetAcceptConnResponder {
11616    fn drop(&mut self) {
11617        self.control_handle.shutdown();
11618        // Safety: drops once, never accessed again
11619        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11620    }
11621}
11622
11623impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11624    type ControlHandle = SocketControlHandle;
11625
11626    fn control_handle(&self) -> &SocketControlHandle {
11627        &self.control_handle
11628    }
11629
11630    fn drop_without_shutdown(mut self) {
11631        // Safety: drops once, never accessed again due to mem::forget
11632        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11633        // Prevent Drop from running (which would shut down the channel)
11634        std::mem::forget(self);
11635    }
11636}
11637
11638impl SocketGetAcceptConnResponder {
11639    /// Sends a response to the FIDL transaction.
11640    ///
11641    /// Sets the channel to shutdown if an error occurs.
11642    pub fn send(
11643        self,
11644        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11645    ) -> Result<(), fidl::Error> {
11646        let _result = self.send_raw(result);
11647        if _result.is_err() {
11648            self.control_handle.shutdown();
11649        }
11650        self.drop_without_shutdown();
11651        _result
11652    }
11653
11654    /// Similar to "send" but does not shutdown the channel if an error occurs.
11655    pub fn send_no_shutdown_on_err(
11656        self,
11657        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11658    ) -> Result<(), fidl::Error> {
11659        let _result = self.send_raw(result);
11660        self.drop_without_shutdown();
11661        _result
11662    }
11663
11664    fn send_raw(
11665        &self,
11666        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11667    ) -> Result<(), fidl::Error> {
11668        self.control_handle.inner.send::<fidl::encoding::ResultType<
11669            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11670            fidl_fuchsia_posix::Errno,
11671        >>(
11672            result.map(|value| (value,)),
11673            self.tx_id,
11674            0x67ce6db6c2ec8966,
11675            fidl::encoding::DynamicFlags::empty(),
11676        )
11677    }
11678}
11679
11680#[must_use = "FIDL methods require a response to be sent"]
11681#[derive(Debug)]
11682pub struct SocketSetBindToDeviceResponder {
11683    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11684    tx_id: u32,
11685}
11686
11687/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11688/// if the responder is dropped without sending a response, so that the client
11689/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11690impl std::ops::Drop for SocketSetBindToDeviceResponder {
11691    fn drop(&mut self) {
11692        self.control_handle.shutdown();
11693        // Safety: drops once, never accessed again
11694        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11695    }
11696}
11697
11698impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11699    type ControlHandle = SocketControlHandle;
11700
11701    fn control_handle(&self) -> &SocketControlHandle {
11702        &self.control_handle
11703    }
11704
11705    fn drop_without_shutdown(mut self) {
11706        // Safety: drops once, never accessed again due to mem::forget
11707        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11708        // Prevent Drop from running (which would shut down the channel)
11709        std::mem::forget(self);
11710    }
11711}
11712
11713impl SocketSetBindToDeviceResponder {
11714    /// Sends a response to the FIDL transaction.
11715    ///
11716    /// Sets the channel to shutdown if an error occurs.
11717    pub fn send(
11718        self,
11719        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11720    ) -> Result<(), fidl::Error> {
11721        let _result = self.send_raw(result);
11722        if _result.is_err() {
11723            self.control_handle.shutdown();
11724        }
11725        self.drop_without_shutdown();
11726        _result
11727    }
11728
11729    /// Similar to "send" but does not shutdown the channel if an error occurs.
11730    pub fn send_no_shutdown_on_err(
11731        self,
11732        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11733    ) -> Result<(), fidl::Error> {
11734        let _result = self.send_raw(result);
11735        self.drop_without_shutdown();
11736        _result
11737    }
11738
11739    fn send_raw(
11740        &self,
11741        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11742    ) -> Result<(), fidl::Error> {
11743        self.control_handle.inner.send::<fidl::encoding::ResultType<
11744            fidl::encoding::EmptyStruct,
11745            fidl_fuchsia_posix::Errno,
11746        >>(
11747            result,
11748            self.tx_id,
11749            0x2118b483f28aafc4,
11750            fidl::encoding::DynamicFlags::empty(),
11751        )
11752    }
11753}
11754
11755#[must_use = "FIDL methods require a response to be sent"]
11756#[derive(Debug)]
11757pub struct SocketGetBindToDeviceResponder {
11758    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11759    tx_id: u32,
11760}
11761
11762/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11763/// if the responder is dropped without sending a response, so that the client
11764/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11765impl std::ops::Drop for SocketGetBindToDeviceResponder {
11766    fn drop(&mut self) {
11767        self.control_handle.shutdown();
11768        // Safety: drops once, never accessed again
11769        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11770    }
11771}
11772
11773impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11774    type ControlHandle = SocketControlHandle;
11775
11776    fn control_handle(&self) -> &SocketControlHandle {
11777        &self.control_handle
11778    }
11779
11780    fn drop_without_shutdown(mut self) {
11781        // Safety: drops once, never accessed again due to mem::forget
11782        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11783        // Prevent Drop from running (which would shut down the channel)
11784        std::mem::forget(self);
11785    }
11786}
11787
11788impl SocketGetBindToDeviceResponder {
11789    /// Sends a response to the FIDL transaction.
11790    ///
11791    /// Sets the channel to shutdown if an error occurs.
11792    pub fn send(
11793        self,
11794        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11795    ) -> Result<(), fidl::Error> {
11796        let _result = self.send_raw(result);
11797        if _result.is_err() {
11798            self.control_handle.shutdown();
11799        }
11800        self.drop_without_shutdown();
11801        _result
11802    }
11803
11804    /// Similar to "send" but does not shutdown the channel if an error occurs.
11805    pub fn send_no_shutdown_on_err(
11806        self,
11807        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11808    ) -> Result<(), fidl::Error> {
11809        let _result = self.send_raw(result);
11810        self.drop_without_shutdown();
11811        _result
11812    }
11813
11814    fn send_raw(
11815        &self,
11816        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11817    ) -> Result<(), fidl::Error> {
11818        self.control_handle.inner.send::<fidl::encoding::ResultType<
11819            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11820            fidl_fuchsia_posix::Errno,
11821        >>(
11822            result.map(|value| (value,)),
11823            self.tx_id,
11824            0x1ab1fbf0ef7906c8,
11825            fidl::encoding::DynamicFlags::empty(),
11826        )
11827    }
11828}
11829
11830#[must_use = "FIDL methods require a response to be sent"]
11831#[derive(Debug)]
11832pub struct SocketSetBindToInterfaceIndexResponder {
11833    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11834    tx_id: u32,
11835}
11836
11837/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11838/// if the responder is dropped without sending a response, so that the client
11839/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11840impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11841    fn drop(&mut self) {
11842        self.control_handle.shutdown();
11843        // Safety: drops once, never accessed again
11844        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11845    }
11846}
11847
11848impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11849    type ControlHandle = SocketControlHandle;
11850
11851    fn control_handle(&self) -> &SocketControlHandle {
11852        &self.control_handle
11853    }
11854
11855    fn drop_without_shutdown(mut self) {
11856        // Safety: drops once, never accessed again due to mem::forget
11857        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11858        // Prevent Drop from running (which would shut down the channel)
11859        std::mem::forget(self);
11860    }
11861}
11862
11863impl SocketSetBindToInterfaceIndexResponder {
11864    /// Sends a response to the FIDL transaction.
11865    ///
11866    /// Sets the channel to shutdown if an error occurs.
11867    pub fn send(
11868        self,
11869        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11870    ) -> Result<(), fidl::Error> {
11871        let _result = self.send_raw(result);
11872        if _result.is_err() {
11873            self.control_handle.shutdown();
11874        }
11875        self.drop_without_shutdown();
11876        _result
11877    }
11878
11879    /// Similar to "send" but does not shutdown the channel if an error occurs.
11880    pub fn send_no_shutdown_on_err(
11881        self,
11882        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11883    ) -> Result<(), fidl::Error> {
11884        let _result = self.send_raw(result);
11885        self.drop_without_shutdown();
11886        _result
11887    }
11888
11889    fn send_raw(
11890        &self,
11891        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11892    ) -> Result<(), fidl::Error> {
11893        self.control_handle.inner.send::<fidl::encoding::ResultType<
11894            fidl::encoding::EmptyStruct,
11895            fidl_fuchsia_posix::Errno,
11896        >>(
11897            result,
11898            self.tx_id,
11899            0x6e387a0def00821,
11900            fidl::encoding::DynamicFlags::empty(),
11901        )
11902    }
11903}
11904
11905#[must_use = "FIDL methods require a response to be sent"]
11906#[derive(Debug)]
11907pub struct SocketGetBindToInterfaceIndexResponder {
11908    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11909    tx_id: u32,
11910}
11911
11912/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11913/// if the responder is dropped without sending a response, so that the client
11914/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11915impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11916    fn drop(&mut self) {
11917        self.control_handle.shutdown();
11918        // Safety: drops once, never accessed again
11919        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11920    }
11921}
11922
11923impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11924    type ControlHandle = SocketControlHandle;
11925
11926    fn control_handle(&self) -> &SocketControlHandle {
11927        &self.control_handle
11928    }
11929
11930    fn drop_without_shutdown(mut self) {
11931        // Safety: drops once, never accessed again due to mem::forget
11932        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11933        // Prevent Drop from running (which would shut down the channel)
11934        std::mem::forget(self);
11935    }
11936}
11937
11938impl SocketGetBindToInterfaceIndexResponder {
11939    /// Sends a response to the FIDL transaction.
11940    ///
11941    /// Sets the channel to shutdown if an error occurs.
11942    pub fn send(
11943        self,
11944        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11945    ) -> Result<(), fidl::Error> {
11946        let _result = self.send_raw(result);
11947        if _result.is_err() {
11948            self.control_handle.shutdown();
11949        }
11950        self.drop_without_shutdown();
11951        _result
11952    }
11953
11954    /// Similar to "send" but does not shutdown the channel if an error occurs.
11955    pub fn send_no_shutdown_on_err(
11956        self,
11957        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11958    ) -> Result<(), fidl::Error> {
11959        let _result = self.send_raw(result);
11960        self.drop_without_shutdown();
11961        _result
11962    }
11963
11964    fn send_raw(
11965        &self,
11966        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11967    ) -> Result<(), fidl::Error> {
11968        self.control_handle.inner.send::<fidl::encoding::ResultType<
11969            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11970            fidl_fuchsia_posix::Errno,
11971        >>(
11972            result.map(|value| (value,)),
11973            self.tx_id,
11974            0x59c31dd3e3078295,
11975            fidl::encoding::DynamicFlags::empty(),
11976        )
11977    }
11978}
11979
11980#[must_use = "FIDL methods require a response to be sent"]
11981#[derive(Debug)]
11982pub struct SocketSetTimestampResponder {
11983    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11984    tx_id: u32,
11985}
11986
11987/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11988/// if the responder is dropped without sending a response, so that the client
11989/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11990impl std::ops::Drop for SocketSetTimestampResponder {
11991    fn drop(&mut self) {
11992        self.control_handle.shutdown();
11993        // Safety: drops once, never accessed again
11994        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11995    }
11996}
11997
11998impl fidl::endpoints::Responder for SocketSetTimestampResponder {
11999    type ControlHandle = SocketControlHandle;
12000
12001    fn control_handle(&self) -> &SocketControlHandle {
12002        &self.control_handle
12003    }
12004
12005    fn drop_without_shutdown(mut self) {
12006        // Safety: drops once, never accessed again due to mem::forget
12007        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12008        // Prevent Drop from running (which would shut down the channel)
12009        std::mem::forget(self);
12010    }
12011}
12012
12013impl SocketSetTimestampResponder {
12014    /// Sends a response to the FIDL transaction.
12015    ///
12016    /// Sets the channel to shutdown if an error occurs.
12017    pub fn send(
12018        self,
12019        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12020    ) -> Result<(), fidl::Error> {
12021        let _result = self.send_raw(result);
12022        if _result.is_err() {
12023            self.control_handle.shutdown();
12024        }
12025        self.drop_without_shutdown();
12026        _result
12027    }
12028
12029    /// Similar to "send" but does not shutdown the channel if an error occurs.
12030    pub fn send_no_shutdown_on_err(
12031        self,
12032        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12033    ) -> Result<(), fidl::Error> {
12034        let _result = self.send_raw(result);
12035        self.drop_without_shutdown();
12036        _result
12037    }
12038
12039    fn send_raw(
12040        &self,
12041        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12042    ) -> Result<(), fidl::Error> {
12043        self.control_handle.inner.send::<fidl::encoding::ResultType<
12044            fidl::encoding::EmptyStruct,
12045            fidl_fuchsia_posix::Errno,
12046        >>(
12047            result,
12048            self.tx_id,
12049            0x285d6516c263d839,
12050            fidl::encoding::DynamicFlags::empty(),
12051        )
12052    }
12053}
12054
12055#[must_use = "FIDL methods require a response to be sent"]
12056#[derive(Debug)]
12057pub struct SocketGetTimestampResponder {
12058    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12059    tx_id: u32,
12060}
12061
12062/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12063/// if the responder is dropped without sending a response, so that the client
12064/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12065impl std::ops::Drop for SocketGetTimestampResponder {
12066    fn drop(&mut self) {
12067        self.control_handle.shutdown();
12068        // Safety: drops once, never accessed again
12069        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12070    }
12071}
12072
12073impl fidl::endpoints::Responder for SocketGetTimestampResponder {
12074    type ControlHandle = SocketControlHandle;
12075
12076    fn control_handle(&self) -> &SocketControlHandle {
12077        &self.control_handle
12078    }
12079
12080    fn drop_without_shutdown(mut self) {
12081        // Safety: drops once, never accessed again due to mem::forget
12082        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12083        // Prevent Drop from running (which would shut down the channel)
12084        std::mem::forget(self);
12085    }
12086}
12087
12088impl SocketGetTimestampResponder {
12089    /// Sends a response to the FIDL transaction.
12090    ///
12091    /// Sets the channel to shutdown if an error occurs.
12092    pub fn send(
12093        self,
12094        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12095    ) -> Result<(), fidl::Error> {
12096        let _result = self.send_raw(result);
12097        if _result.is_err() {
12098            self.control_handle.shutdown();
12099        }
12100        self.drop_without_shutdown();
12101        _result
12102    }
12103
12104    /// Similar to "send" but does not shutdown the channel if an error occurs.
12105    pub fn send_no_shutdown_on_err(
12106        self,
12107        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12108    ) -> Result<(), fidl::Error> {
12109        let _result = self.send_raw(result);
12110        self.drop_without_shutdown();
12111        _result
12112    }
12113
12114    fn send_raw(
12115        &self,
12116        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12117    ) -> Result<(), fidl::Error> {
12118        self.control_handle.inner.send::<fidl::encoding::ResultType<
12119            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
12120            fidl_fuchsia_posix::Errno,
12121        >>(
12122            result.map(|value| (value,)),
12123            self.tx_id,
12124            0x49f2fffbbcc2bd27,
12125            fidl::encoding::DynamicFlags::empty(),
12126        )
12127    }
12128}
12129
12130#[must_use = "FIDL methods require a response to be sent"]
12131#[derive(Debug)]
12132pub struct SocketSetMarkResponder {
12133    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12134    tx_id: u32,
12135}
12136
12137/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12138/// if the responder is dropped without sending a response, so that the client
12139/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12140impl std::ops::Drop for SocketSetMarkResponder {
12141    fn drop(&mut self) {
12142        self.control_handle.shutdown();
12143        // Safety: drops once, never accessed again
12144        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12145    }
12146}
12147
12148impl fidl::endpoints::Responder for SocketSetMarkResponder {
12149    type ControlHandle = SocketControlHandle;
12150
12151    fn control_handle(&self) -> &SocketControlHandle {
12152        &self.control_handle
12153    }
12154
12155    fn drop_without_shutdown(mut self) {
12156        // Safety: drops once, never accessed again due to mem::forget
12157        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12158        // Prevent Drop from running (which would shut down the channel)
12159        std::mem::forget(self);
12160    }
12161}
12162
12163impl SocketSetMarkResponder {
12164    /// Sends a response to the FIDL transaction.
12165    ///
12166    /// Sets the channel to shutdown if an error occurs.
12167    pub fn send(
12168        self,
12169        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12170    ) -> Result<(), fidl::Error> {
12171        let _result = self.send_raw(result);
12172        if _result.is_err() {
12173            self.control_handle.shutdown();
12174        }
12175        self.drop_without_shutdown();
12176        _result
12177    }
12178
12179    /// Similar to "send" but does not shutdown the channel if an error occurs.
12180    pub fn send_no_shutdown_on_err(
12181        self,
12182        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12183    ) -> Result<(), fidl::Error> {
12184        let _result = self.send_raw(result);
12185        self.drop_without_shutdown();
12186        _result
12187    }
12188
12189    fn send_raw(
12190        &self,
12191        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12192    ) -> Result<(), fidl::Error> {
12193        self.control_handle.inner.send::<fidl::encoding::ResultType<
12194            fidl::encoding::EmptyStruct,
12195            fidl_fuchsia_posix::Errno,
12196        >>(
12197            result,
12198            self.tx_id,
12199            0x6ead6de09f653236,
12200            fidl::encoding::DynamicFlags::empty(),
12201        )
12202    }
12203}
12204
12205#[must_use = "FIDL methods require a response to be sent"]
12206#[derive(Debug)]
12207pub struct SocketGetMarkResponder {
12208    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12209    tx_id: u32,
12210}
12211
12212/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12213/// if the responder is dropped without sending a response, so that the client
12214/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12215impl std::ops::Drop for SocketGetMarkResponder {
12216    fn drop(&mut self) {
12217        self.control_handle.shutdown();
12218        // Safety: drops once, never accessed again
12219        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12220    }
12221}
12222
12223impl fidl::endpoints::Responder for SocketGetMarkResponder {
12224    type ControlHandle = SocketControlHandle;
12225
12226    fn control_handle(&self) -> &SocketControlHandle {
12227        &self.control_handle
12228    }
12229
12230    fn drop_without_shutdown(mut self) {
12231        // Safety: drops once, never accessed again due to mem::forget
12232        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12233        // Prevent Drop from running (which would shut down the channel)
12234        std::mem::forget(self);
12235    }
12236}
12237
12238impl SocketGetMarkResponder {
12239    /// Sends a response to the FIDL transaction.
12240    ///
12241    /// Sets the channel to shutdown if an error occurs.
12242    pub fn send(
12243        self,
12244        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12245    ) -> Result<(), fidl::Error> {
12246        let _result = self.send_raw(result);
12247        if _result.is_err() {
12248            self.control_handle.shutdown();
12249        }
12250        self.drop_without_shutdown();
12251        _result
12252    }
12253
12254    /// Similar to "send" but does not shutdown the channel if an error occurs.
12255    pub fn send_no_shutdown_on_err(
12256        self,
12257        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12258    ) -> Result<(), fidl::Error> {
12259        let _result = self.send_raw(result);
12260        self.drop_without_shutdown();
12261        _result
12262    }
12263
12264    fn send_raw(
12265        &self,
12266        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12267    ) -> Result<(), fidl::Error> {
12268        self.control_handle.inner.send::<fidl::encoding::ResultType<
12269            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
12270            fidl_fuchsia_posix::Errno,
12271        >>(
12272            result.map(|mark| (mark,)),
12273            self.tx_id,
12274            0x57a2752c61d93d47,
12275            fidl::encoding::DynamicFlags::empty(),
12276        )
12277    }
12278}
12279
12280#[must_use = "FIDL methods require a response to be sent"]
12281#[derive(Debug)]
12282pub struct SocketGetCookieResponder {
12283    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12284    tx_id: u32,
12285}
12286
12287/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12288/// if the responder is dropped without sending a response, so that the client
12289/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12290impl std::ops::Drop for SocketGetCookieResponder {
12291    fn drop(&mut self) {
12292        self.control_handle.shutdown();
12293        // Safety: drops once, never accessed again
12294        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12295    }
12296}
12297
12298impl fidl::endpoints::Responder for SocketGetCookieResponder {
12299    type ControlHandle = SocketControlHandle;
12300
12301    fn control_handle(&self) -> &SocketControlHandle {
12302        &self.control_handle
12303    }
12304
12305    fn drop_without_shutdown(mut self) {
12306        // Safety: drops once, never accessed again due to mem::forget
12307        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12308        // Prevent Drop from running (which would shut down the channel)
12309        std::mem::forget(self);
12310    }
12311}
12312
12313impl SocketGetCookieResponder {
12314    /// Sends a response to the FIDL transaction.
12315    ///
12316    /// Sets the channel to shutdown if an error occurs.
12317    pub fn send(
12318        self,
12319        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12320    ) -> Result<(), fidl::Error> {
12321        let _result = self.send_raw(result);
12322        if _result.is_err() {
12323            self.control_handle.shutdown();
12324        }
12325        self.drop_without_shutdown();
12326        _result
12327    }
12328
12329    /// Similar to "send" but does not shutdown the channel if an error occurs.
12330    pub fn send_no_shutdown_on_err(
12331        self,
12332        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12333    ) -> Result<(), fidl::Error> {
12334        let _result = self.send_raw(result);
12335        self.drop_without_shutdown();
12336        _result
12337    }
12338
12339    fn send_raw(
12340        &self,
12341        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12342    ) -> Result<(), fidl::Error> {
12343        self.control_handle.inner.send::<fidl::encoding::ResultType<
12344            fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
12345            fidl_fuchsia_posix::Errno,
12346        >>(
12347            result.map(|value| (value,)),
12348            self.tx_id,
12349            0x2c2f47fd8f924e52,
12350            fidl::encoding::DynamicFlags::empty(),
12351        )
12352    }
12353}
12354
12355#[must_use = "FIDL methods require a response to be sent"]
12356#[derive(Debug)]
12357pub struct SocketBindResponder {
12358    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12359    tx_id: u32,
12360}
12361
12362/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12363/// if the responder is dropped without sending a response, so that the client
12364/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12365impl std::ops::Drop for SocketBindResponder {
12366    fn drop(&mut self) {
12367        self.control_handle.shutdown();
12368        // Safety: drops once, never accessed again
12369        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12370    }
12371}
12372
12373impl fidl::endpoints::Responder for SocketBindResponder {
12374    type ControlHandle = SocketControlHandle;
12375
12376    fn control_handle(&self) -> &SocketControlHandle {
12377        &self.control_handle
12378    }
12379
12380    fn drop_without_shutdown(mut self) {
12381        // Safety: drops once, never accessed again due to mem::forget
12382        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12383        // Prevent Drop from running (which would shut down the channel)
12384        std::mem::forget(self);
12385    }
12386}
12387
12388impl SocketBindResponder {
12389    /// Sends a response to the FIDL transaction.
12390    ///
12391    /// Sets the channel to shutdown if an error occurs.
12392    pub fn send(
12393        self,
12394        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12395    ) -> Result<(), fidl::Error> {
12396        let _result = self.send_raw(result);
12397        if _result.is_err() {
12398            self.control_handle.shutdown();
12399        }
12400        self.drop_without_shutdown();
12401        _result
12402    }
12403
12404    /// Similar to "send" but does not shutdown the channel if an error occurs.
12405    pub fn send_no_shutdown_on_err(
12406        self,
12407        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12408    ) -> Result<(), fidl::Error> {
12409        let _result = self.send_raw(result);
12410        self.drop_without_shutdown();
12411        _result
12412    }
12413
12414    fn send_raw(
12415        &self,
12416        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12417    ) -> Result<(), fidl::Error> {
12418        self.control_handle.inner.send::<fidl::encoding::ResultType<
12419            fidl::encoding::EmptyStruct,
12420            fidl_fuchsia_posix::Errno,
12421        >>(
12422            result,
12423            self.tx_id,
12424            0x4bc6400ae92125d,
12425            fidl::encoding::DynamicFlags::empty(),
12426        )
12427    }
12428}
12429
12430#[must_use = "FIDL methods require a response to be sent"]
12431#[derive(Debug)]
12432pub struct SocketConnectResponder {
12433    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12434    tx_id: u32,
12435}
12436
12437/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12438/// if the responder is dropped without sending a response, so that the client
12439/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12440impl std::ops::Drop for SocketConnectResponder {
12441    fn drop(&mut self) {
12442        self.control_handle.shutdown();
12443        // Safety: drops once, never accessed again
12444        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12445    }
12446}
12447
12448impl fidl::endpoints::Responder for SocketConnectResponder {
12449    type ControlHandle = SocketControlHandle;
12450
12451    fn control_handle(&self) -> &SocketControlHandle {
12452        &self.control_handle
12453    }
12454
12455    fn drop_without_shutdown(mut self) {
12456        // Safety: drops once, never accessed again due to mem::forget
12457        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12458        // Prevent Drop from running (which would shut down the channel)
12459        std::mem::forget(self);
12460    }
12461}
12462
12463impl SocketConnectResponder {
12464    /// Sends a response to the FIDL transaction.
12465    ///
12466    /// Sets the channel to shutdown if an error occurs.
12467    pub fn send(
12468        self,
12469        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12470    ) -> Result<(), fidl::Error> {
12471        let _result = self.send_raw(result);
12472        if _result.is_err() {
12473            self.control_handle.shutdown();
12474        }
12475        self.drop_without_shutdown();
12476        _result
12477    }
12478
12479    /// Similar to "send" but does not shutdown the channel if an error occurs.
12480    pub fn send_no_shutdown_on_err(
12481        self,
12482        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12483    ) -> Result<(), fidl::Error> {
12484        let _result = self.send_raw(result);
12485        self.drop_without_shutdown();
12486        _result
12487    }
12488
12489    fn send_raw(
12490        &self,
12491        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12492    ) -> Result<(), fidl::Error> {
12493        self.control_handle.inner.send::<fidl::encoding::ResultType<
12494            fidl::encoding::EmptyStruct,
12495            fidl_fuchsia_posix::Errno,
12496        >>(
12497            result,
12498            self.tx_id,
12499            0x5f05f19bfdd38871,
12500            fidl::encoding::DynamicFlags::empty(),
12501        )
12502    }
12503}
12504
12505#[must_use = "FIDL methods require a response to be sent"]
12506#[derive(Debug)]
12507pub struct SocketDisconnectResponder {
12508    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12509    tx_id: u32,
12510}
12511
12512/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12513/// if the responder is dropped without sending a response, so that the client
12514/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12515impl std::ops::Drop for SocketDisconnectResponder {
12516    fn drop(&mut self) {
12517        self.control_handle.shutdown();
12518        // Safety: drops once, never accessed again
12519        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12520    }
12521}
12522
12523impl fidl::endpoints::Responder for SocketDisconnectResponder {
12524    type ControlHandle = SocketControlHandle;
12525
12526    fn control_handle(&self) -> &SocketControlHandle {
12527        &self.control_handle
12528    }
12529
12530    fn drop_without_shutdown(mut self) {
12531        // Safety: drops once, never accessed again due to mem::forget
12532        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12533        // Prevent Drop from running (which would shut down the channel)
12534        std::mem::forget(self);
12535    }
12536}
12537
12538impl SocketDisconnectResponder {
12539    /// Sends a response to the FIDL transaction.
12540    ///
12541    /// Sets the channel to shutdown if an error occurs.
12542    pub fn send(
12543        self,
12544        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12545    ) -> Result<(), fidl::Error> {
12546        let _result = self.send_raw(result);
12547        if _result.is_err() {
12548            self.control_handle.shutdown();
12549        }
12550        self.drop_without_shutdown();
12551        _result
12552    }
12553
12554    /// Similar to "send" but does not shutdown the channel if an error occurs.
12555    pub fn send_no_shutdown_on_err(
12556        self,
12557        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12558    ) -> Result<(), fidl::Error> {
12559        let _result = self.send_raw(result);
12560        self.drop_without_shutdown();
12561        _result
12562    }
12563
12564    fn send_raw(
12565        &self,
12566        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12567    ) -> Result<(), fidl::Error> {
12568        self.control_handle.inner.send::<fidl::encoding::ResultType<
12569            fidl::encoding::EmptyStruct,
12570            fidl_fuchsia_posix::Errno,
12571        >>(
12572            result,
12573            self.tx_id,
12574            0x74e63b91f7b29b2,
12575            fidl::encoding::DynamicFlags::empty(),
12576        )
12577    }
12578}
12579
12580#[must_use = "FIDL methods require a response to be sent"]
12581#[derive(Debug)]
12582pub struct SocketGetSockNameResponder {
12583    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12584    tx_id: u32,
12585}
12586
12587/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12588/// if the responder is dropped without sending a response, so that the client
12589/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12590impl std::ops::Drop for SocketGetSockNameResponder {
12591    fn drop(&mut self) {
12592        self.control_handle.shutdown();
12593        // Safety: drops once, never accessed again
12594        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12595    }
12596}
12597
12598impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12599    type ControlHandle = SocketControlHandle;
12600
12601    fn control_handle(&self) -> &SocketControlHandle {
12602        &self.control_handle
12603    }
12604
12605    fn drop_without_shutdown(mut self) {
12606        // Safety: drops once, never accessed again due to mem::forget
12607        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12608        // Prevent Drop from running (which would shut down the channel)
12609        std::mem::forget(self);
12610    }
12611}
12612
12613impl SocketGetSockNameResponder {
12614    /// Sends a response to the FIDL transaction.
12615    ///
12616    /// Sets the channel to shutdown if an error occurs.
12617    pub fn send(
12618        self,
12619        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12620    ) -> Result<(), fidl::Error> {
12621        let _result = self.send_raw(result);
12622        if _result.is_err() {
12623            self.control_handle.shutdown();
12624        }
12625        self.drop_without_shutdown();
12626        _result
12627    }
12628
12629    /// Similar to "send" but does not shutdown the channel if an error occurs.
12630    pub fn send_no_shutdown_on_err(
12631        self,
12632        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12633    ) -> Result<(), fidl::Error> {
12634        let _result = self.send_raw(result);
12635        self.drop_without_shutdown();
12636        _result
12637    }
12638
12639    fn send_raw(
12640        &self,
12641        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12642    ) -> Result<(), fidl::Error> {
12643        self.control_handle.inner.send::<fidl::encoding::ResultType<
12644            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12645            fidl_fuchsia_posix::Errno,
12646        >>(
12647            result.map(|addr| (addr,)),
12648            self.tx_id,
12649            0x475f23f84a1a4f85,
12650            fidl::encoding::DynamicFlags::empty(),
12651        )
12652    }
12653}
12654
12655#[must_use = "FIDL methods require a response to be sent"]
12656#[derive(Debug)]
12657pub struct SocketGetPeerNameResponder {
12658    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12659    tx_id: u32,
12660}
12661
12662/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12663/// if the responder is dropped without sending a response, so that the client
12664/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12665impl std::ops::Drop for SocketGetPeerNameResponder {
12666    fn drop(&mut self) {
12667        self.control_handle.shutdown();
12668        // Safety: drops once, never accessed again
12669        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12670    }
12671}
12672
12673impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12674    type ControlHandle = SocketControlHandle;
12675
12676    fn control_handle(&self) -> &SocketControlHandle {
12677        &self.control_handle
12678    }
12679
12680    fn drop_without_shutdown(mut self) {
12681        // Safety: drops once, never accessed again due to mem::forget
12682        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12683        // Prevent Drop from running (which would shut down the channel)
12684        std::mem::forget(self);
12685    }
12686}
12687
12688impl SocketGetPeerNameResponder {
12689    /// Sends a response to the FIDL transaction.
12690    ///
12691    /// Sets the channel to shutdown if an error occurs.
12692    pub fn send(
12693        self,
12694        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12695    ) -> Result<(), fidl::Error> {
12696        let _result = self.send_raw(result);
12697        if _result.is_err() {
12698            self.control_handle.shutdown();
12699        }
12700        self.drop_without_shutdown();
12701        _result
12702    }
12703
12704    /// Similar to "send" but does not shutdown the channel if an error occurs.
12705    pub fn send_no_shutdown_on_err(
12706        self,
12707        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12708    ) -> Result<(), fidl::Error> {
12709        let _result = self.send_raw(result);
12710        self.drop_without_shutdown();
12711        _result
12712    }
12713
12714    fn send_raw(
12715        &self,
12716        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12717    ) -> Result<(), fidl::Error> {
12718        self.control_handle.inner.send::<fidl::encoding::ResultType<
12719            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12720            fidl_fuchsia_posix::Errno,
12721        >>(
12722            result.map(|addr| (addr,)),
12723            self.tx_id,
12724            0x1ffecf4bd5b6432e,
12725            fidl::encoding::DynamicFlags::empty(),
12726        )
12727    }
12728}
12729
12730#[must_use = "FIDL methods require a response to be sent"]
12731#[derive(Debug)]
12732pub struct SocketShutdownResponder {
12733    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12734    tx_id: u32,
12735}
12736
12737/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12738/// if the responder is dropped without sending a response, so that the client
12739/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12740impl std::ops::Drop for SocketShutdownResponder {
12741    fn drop(&mut self) {
12742        self.control_handle.shutdown();
12743        // Safety: drops once, never accessed again
12744        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12745    }
12746}
12747
12748impl fidl::endpoints::Responder for SocketShutdownResponder {
12749    type ControlHandle = SocketControlHandle;
12750
12751    fn control_handle(&self) -> &SocketControlHandle {
12752        &self.control_handle
12753    }
12754
12755    fn drop_without_shutdown(mut self) {
12756        // Safety: drops once, never accessed again due to mem::forget
12757        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12758        // Prevent Drop from running (which would shut down the channel)
12759        std::mem::forget(self);
12760    }
12761}
12762
12763impl SocketShutdownResponder {
12764    /// Sends a response to the FIDL transaction.
12765    ///
12766    /// Sets the channel to shutdown if an error occurs.
12767    pub fn send(
12768        self,
12769        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12770    ) -> Result<(), fidl::Error> {
12771        let _result = self.send_raw(result);
12772        if _result.is_err() {
12773            self.control_handle.shutdown();
12774        }
12775        self.drop_without_shutdown();
12776        _result
12777    }
12778
12779    /// Similar to "send" but does not shutdown the channel if an error occurs.
12780    pub fn send_no_shutdown_on_err(
12781        self,
12782        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12783    ) -> Result<(), fidl::Error> {
12784        let _result = self.send_raw(result);
12785        self.drop_without_shutdown();
12786        _result
12787    }
12788
12789    fn send_raw(
12790        &self,
12791        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12792    ) -> Result<(), fidl::Error> {
12793        self.control_handle.inner.send::<fidl::encoding::ResultType<
12794            fidl::encoding::EmptyStruct,
12795            fidl_fuchsia_posix::Errno,
12796        >>(
12797            result,
12798            self.tx_id,
12799            0x247f38b6db68c336,
12800            fidl::encoding::DynamicFlags::empty(),
12801        )
12802    }
12803}
12804
12805#[must_use = "FIDL methods require a response to be sent"]
12806#[derive(Debug)]
12807pub struct SocketSetIpTypeOfServiceResponder {
12808    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12809    tx_id: u32,
12810}
12811
12812/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12813/// if the responder is dropped without sending a response, so that the client
12814/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12815impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12816    fn drop(&mut self) {
12817        self.control_handle.shutdown();
12818        // Safety: drops once, never accessed again
12819        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12820    }
12821}
12822
12823impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12824    type ControlHandle = SocketControlHandle;
12825
12826    fn control_handle(&self) -> &SocketControlHandle {
12827        &self.control_handle
12828    }
12829
12830    fn drop_without_shutdown(mut self) {
12831        // Safety: drops once, never accessed again due to mem::forget
12832        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12833        // Prevent Drop from running (which would shut down the channel)
12834        std::mem::forget(self);
12835    }
12836}
12837
12838impl SocketSetIpTypeOfServiceResponder {
12839    /// Sends a response to the FIDL transaction.
12840    ///
12841    /// Sets the channel to shutdown if an error occurs.
12842    pub fn send(
12843        self,
12844        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12845    ) -> Result<(), fidl::Error> {
12846        let _result = self.send_raw(result);
12847        if _result.is_err() {
12848            self.control_handle.shutdown();
12849        }
12850        self.drop_without_shutdown();
12851        _result
12852    }
12853
12854    /// Similar to "send" but does not shutdown the channel if an error occurs.
12855    pub fn send_no_shutdown_on_err(
12856        self,
12857        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12858    ) -> Result<(), fidl::Error> {
12859        let _result = self.send_raw(result);
12860        self.drop_without_shutdown();
12861        _result
12862    }
12863
12864    fn send_raw(
12865        &self,
12866        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12867    ) -> Result<(), fidl::Error> {
12868        self.control_handle.inner.send::<fidl::encoding::ResultType<
12869            fidl::encoding::EmptyStruct,
12870            fidl_fuchsia_posix::Errno,
12871        >>(
12872            result,
12873            self.tx_id,
12874            0x995c600475b6d46,
12875            fidl::encoding::DynamicFlags::empty(),
12876        )
12877    }
12878}
12879
12880#[must_use = "FIDL methods require a response to be sent"]
12881#[derive(Debug)]
12882pub struct SocketGetIpTypeOfServiceResponder {
12883    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12884    tx_id: u32,
12885}
12886
12887/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12888/// if the responder is dropped without sending a response, so that the client
12889/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12890impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12891    fn drop(&mut self) {
12892        self.control_handle.shutdown();
12893        // Safety: drops once, never accessed again
12894        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12895    }
12896}
12897
12898impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12899    type ControlHandle = SocketControlHandle;
12900
12901    fn control_handle(&self) -> &SocketControlHandle {
12902        &self.control_handle
12903    }
12904
12905    fn drop_without_shutdown(mut self) {
12906        // Safety: drops once, never accessed again due to mem::forget
12907        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12908        // Prevent Drop from running (which would shut down the channel)
12909        std::mem::forget(self);
12910    }
12911}
12912
12913impl SocketGetIpTypeOfServiceResponder {
12914    /// Sends a response to the FIDL transaction.
12915    ///
12916    /// Sets the channel to shutdown if an error occurs.
12917    pub fn send(
12918        self,
12919        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12920    ) -> Result<(), fidl::Error> {
12921        let _result = self.send_raw(result);
12922        if _result.is_err() {
12923            self.control_handle.shutdown();
12924        }
12925        self.drop_without_shutdown();
12926        _result
12927    }
12928
12929    /// Similar to "send" but does not shutdown the channel if an error occurs.
12930    pub fn send_no_shutdown_on_err(
12931        self,
12932        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12933    ) -> Result<(), fidl::Error> {
12934        let _result = self.send_raw(result);
12935        self.drop_without_shutdown();
12936        _result
12937    }
12938
12939    fn send_raw(
12940        &self,
12941        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12942    ) -> Result<(), fidl::Error> {
12943        self.control_handle.inner.send::<fidl::encoding::ResultType<
12944            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12945            fidl_fuchsia_posix::Errno,
12946        >>(
12947            result.map(|value| (value,)),
12948            self.tx_id,
12949            0x3814a04259f75fcb,
12950            fidl::encoding::DynamicFlags::empty(),
12951        )
12952    }
12953}
12954
12955#[must_use = "FIDL methods require a response to be sent"]
12956#[derive(Debug)]
12957pub struct SocketSetIpTtlResponder {
12958    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12959    tx_id: u32,
12960}
12961
12962/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12963/// if the responder is dropped without sending a response, so that the client
12964/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12965impl std::ops::Drop for SocketSetIpTtlResponder {
12966    fn drop(&mut self) {
12967        self.control_handle.shutdown();
12968        // Safety: drops once, never accessed again
12969        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12970    }
12971}
12972
12973impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12974    type ControlHandle = SocketControlHandle;
12975
12976    fn control_handle(&self) -> &SocketControlHandle {
12977        &self.control_handle
12978    }
12979
12980    fn drop_without_shutdown(mut self) {
12981        // Safety: drops once, never accessed again due to mem::forget
12982        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12983        // Prevent Drop from running (which would shut down the channel)
12984        std::mem::forget(self);
12985    }
12986}
12987
12988impl SocketSetIpTtlResponder {
12989    /// Sends a response to the FIDL transaction.
12990    ///
12991    /// Sets the channel to shutdown if an error occurs.
12992    pub fn send(
12993        self,
12994        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12995    ) -> Result<(), fidl::Error> {
12996        let _result = self.send_raw(result);
12997        if _result.is_err() {
12998            self.control_handle.shutdown();
12999        }
13000        self.drop_without_shutdown();
13001        _result
13002    }
13003
13004    /// Similar to "send" but does not shutdown the channel if an error occurs.
13005    pub fn send_no_shutdown_on_err(
13006        self,
13007        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13008    ) -> Result<(), fidl::Error> {
13009        let _result = self.send_raw(result);
13010        self.drop_without_shutdown();
13011        _result
13012    }
13013
13014    fn send_raw(
13015        &self,
13016        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13017    ) -> Result<(), fidl::Error> {
13018        self.control_handle.inner.send::<fidl::encoding::ResultType<
13019            fidl::encoding::EmptyStruct,
13020            fidl_fuchsia_posix::Errno,
13021        >>(
13022            result,
13023            self.tx_id,
13024            0x29e2424b433ae1ef,
13025            fidl::encoding::DynamicFlags::empty(),
13026        )
13027    }
13028}
13029
13030#[must_use = "FIDL methods require a response to be sent"]
13031#[derive(Debug)]
13032pub struct SocketGetIpTtlResponder {
13033    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13034    tx_id: u32,
13035}
13036
13037/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13038/// if the responder is dropped without sending a response, so that the client
13039/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13040impl std::ops::Drop for SocketGetIpTtlResponder {
13041    fn drop(&mut self) {
13042        self.control_handle.shutdown();
13043        // Safety: drops once, never accessed again
13044        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13045    }
13046}
13047
13048impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
13049    type ControlHandle = SocketControlHandle;
13050
13051    fn control_handle(&self) -> &SocketControlHandle {
13052        &self.control_handle
13053    }
13054
13055    fn drop_without_shutdown(mut self) {
13056        // Safety: drops once, never accessed again due to mem::forget
13057        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13058        // Prevent Drop from running (which would shut down the channel)
13059        std::mem::forget(self);
13060    }
13061}
13062
13063impl SocketGetIpTtlResponder {
13064    /// Sends a response to the FIDL transaction.
13065    ///
13066    /// Sets the channel to shutdown if an error occurs.
13067    pub fn send(
13068        self,
13069        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13070    ) -> Result<(), fidl::Error> {
13071        let _result = self.send_raw(result);
13072        if _result.is_err() {
13073            self.control_handle.shutdown();
13074        }
13075        self.drop_without_shutdown();
13076        _result
13077    }
13078
13079    /// Similar to "send" but does not shutdown the channel if an error occurs.
13080    pub fn send_no_shutdown_on_err(
13081        self,
13082        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13083    ) -> Result<(), fidl::Error> {
13084        let _result = self.send_raw(result);
13085        self.drop_without_shutdown();
13086        _result
13087    }
13088
13089    fn send_raw(
13090        &self,
13091        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13092    ) -> Result<(), fidl::Error> {
13093        self.control_handle.inner.send::<fidl::encoding::ResultType<
13094            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
13095            fidl_fuchsia_posix::Errno,
13096        >>(
13097            result.map(|value| (value,)),
13098            self.tx_id,
13099            0x47e47fa1f24da471,
13100            fidl::encoding::DynamicFlags::empty(),
13101        )
13102    }
13103}
13104
13105#[must_use = "FIDL methods require a response to be sent"]
13106#[derive(Debug)]
13107pub struct SocketSetIpPacketInfoResponder {
13108    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13109    tx_id: u32,
13110}
13111
13112/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13113/// if the responder is dropped without sending a response, so that the client
13114/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13115impl std::ops::Drop for SocketSetIpPacketInfoResponder {
13116    fn drop(&mut self) {
13117        self.control_handle.shutdown();
13118        // Safety: drops once, never accessed again
13119        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13120    }
13121}
13122
13123impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
13124    type ControlHandle = SocketControlHandle;
13125
13126    fn control_handle(&self) -> &SocketControlHandle {
13127        &self.control_handle
13128    }
13129
13130    fn drop_without_shutdown(mut self) {
13131        // Safety: drops once, never accessed again due to mem::forget
13132        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13133        // Prevent Drop from running (which would shut down the channel)
13134        std::mem::forget(self);
13135    }
13136}
13137
13138impl SocketSetIpPacketInfoResponder {
13139    /// Sends a response to the FIDL transaction.
13140    ///
13141    /// Sets the channel to shutdown if an error occurs.
13142    pub fn send(
13143        self,
13144        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13145    ) -> Result<(), fidl::Error> {
13146        let _result = self.send_raw(result);
13147        if _result.is_err() {
13148            self.control_handle.shutdown();
13149        }
13150        self.drop_without_shutdown();
13151        _result
13152    }
13153
13154    /// Similar to "send" but does not shutdown the channel if an error occurs.
13155    pub fn send_no_shutdown_on_err(
13156        self,
13157        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13158    ) -> Result<(), fidl::Error> {
13159        let _result = self.send_raw(result);
13160        self.drop_without_shutdown();
13161        _result
13162    }
13163
13164    fn send_raw(
13165        &self,
13166        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13167    ) -> Result<(), fidl::Error> {
13168        self.control_handle.inner.send::<fidl::encoding::ResultType<
13169            fidl::encoding::EmptyStruct,
13170            fidl_fuchsia_posix::Errno,
13171        >>(
13172            result,
13173            self.tx_id,
13174            0x392d16bee20c0e16,
13175            fidl::encoding::DynamicFlags::empty(),
13176        )
13177    }
13178}
13179
13180#[must_use = "FIDL methods require a response to be sent"]
13181#[derive(Debug)]
13182pub struct SocketGetIpPacketInfoResponder {
13183    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13184    tx_id: u32,
13185}
13186
13187/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13188/// if the responder is dropped without sending a response, so that the client
13189/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13190impl std::ops::Drop for SocketGetIpPacketInfoResponder {
13191    fn drop(&mut self) {
13192        self.control_handle.shutdown();
13193        // Safety: drops once, never accessed again
13194        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13195    }
13196}
13197
13198impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
13199    type ControlHandle = SocketControlHandle;
13200
13201    fn control_handle(&self) -> &SocketControlHandle {
13202        &self.control_handle
13203    }
13204
13205    fn drop_without_shutdown(mut self) {
13206        // Safety: drops once, never accessed again due to mem::forget
13207        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13208        // Prevent Drop from running (which would shut down the channel)
13209        std::mem::forget(self);
13210    }
13211}
13212
13213impl SocketGetIpPacketInfoResponder {
13214    /// Sends a response to the FIDL transaction.
13215    ///
13216    /// Sets the channel to shutdown if an error occurs.
13217    pub fn send(
13218        self,
13219        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13220    ) -> Result<(), fidl::Error> {
13221        let _result = self.send_raw(result);
13222        if _result.is_err() {
13223            self.control_handle.shutdown();
13224        }
13225        self.drop_without_shutdown();
13226        _result
13227    }
13228
13229    /// Similar to "send" but does not shutdown the channel if an error occurs.
13230    pub fn send_no_shutdown_on_err(
13231        self,
13232        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13233    ) -> Result<(), fidl::Error> {
13234        let _result = self.send_raw(result);
13235        self.drop_without_shutdown();
13236        _result
13237    }
13238
13239    fn send_raw(
13240        &self,
13241        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13242    ) -> Result<(), fidl::Error> {
13243        self.control_handle.inner.send::<fidl::encoding::ResultType<
13244            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
13245            fidl_fuchsia_posix::Errno,
13246        >>(
13247            result.map(|value| (value,)),
13248            self.tx_id,
13249            0x54b505f242280740,
13250            fidl::encoding::DynamicFlags::empty(),
13251        )
13252    }
13253}
13254
13255#[must_use = "FIDL methods require a response to be sent"]
13256#[derive(Debug)]
13257pub struct SocketSetIpReceiveTypeOfServiceResponder {
13258    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13259    tx_id: u32,
13260}
13261
13262/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13263/// if the responder is dropped without sending a response, so that the client
13264/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13265impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
13266    fn drop(&mut self) {
13267        self.control_handle.shutdown();
13268        // Safety: drops once, never accessed again
13269        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13270    }
13271}
13272
13273impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
13274    type ControlHandle = SocketControlHandle;
13275
13276    fn control_handle(&self) -> &SocketControlHandle {
13277        &self.control_handle
13278    }
13279
13280    fn drop_without_shutdown(mut self) {
13281        // Safety: drops once, never accessed again due to mem::forget
13282        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13283        // Prevent Drop from running (which would shut down the channel)
13284        std::mem::forget(self);
13285    }
13286}
13287
13288impl SocketSetIpReceiveTypeOfServiceResponder {
13289    /// Sends a response to the FIDL transaction.
13290    ///
13291    /// Sets the channel to shutdown if an error occurs.
13292    pub fn send(
13293        self,
13294        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13295    ) -> Result<(), fidl::Error> {
13296        let _result = self.send_raw(result);
13297        if _result.is_err() {
13298            self.control_handle.shutdown();
13299        }
13300        self.drop_without_shutdown();
13301        _result
13302    }
13303
13304    /// Similar to "send" but does not shutdown the channel if an error occurs.
13305    pub fn send_no_shutdown_on_err(
13306        self,
13307        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13308    ) -> Result<(), fidl::Error> {
13309        let _result = self.send_raw(result);
13310        self.drop_without_shutdown();
13311        _result
13312    }
13313
13314    fn send_raw(
13315        &self,
13316        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13317    ) -> Result<(), fidl::Error> {
13318        self.control_handle.inner.send::<fidl::encoding::ResultType<
13319            fidl::encoding::EmptyStruct,
13320            fidl_fuchsia_posix::Errno,
13321        >>(
13322            result,
13323            self.tx_id,
13324            0x6c4f6714995f84ef,
13325            fidl::encoding::DynamicFlags::empty(),
13326        )
13327    }
13328}
13329
13330#[must_use = "FIDL methods require a response to be sent"]
13331#[derive(Debug)]
13332pub struct SocketGetIpReceiveTypeOfServiceResponder {
13333    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13334    tx_id: u32,
13335}
13336
13337/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13338/// if the responder is dropped without sending a response, so that the client
13339/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13340impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13341    fn drop(&mut self) {
13342        self.control_handle.shutdown();
13343        // Safety: drops once, never accessed again
13344        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13345    }
13346}
13347
13348impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13349    type ControlHandle = SocketControlHandle;
13350
13351    fn control_handle(&self) -> &SocketControlHandle {
13352        &self.control_handle
13353    }
13354
13355    fn drop_without_shutdown(mut self) {
13356        // Safety: drops once, never accessed again due to mem::forget
13357        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13358        // Prevent Drop from running (which would shut down the channel)
13359        std::mem::forget(self);
13360    }
13361}
13362
13363impl SocketGetIpReceiveTypeOfServiceResponder {
13364    /// Sends a response to the FIDL transaction.
13365    ///
13366    /// Sets the channel to shutdown if an error occurs.
13367    pub fn send(
13368        self,
13369        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13370    ) -> Result<(), fidl::Error> {
13371        let _result = self.send_raw(result);
13372        if _result.is_err() {
13373            self.control_handle.shutdown();
13374        }
13375        self.drop_without_shutdown();
13376        _result
13377    }
13378
13379    /// Similar to "send" but does not shutdown the channel if an error occurs.
13380    pub fn send_no_shutdown_on_err(
13381        self,
13382        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13383    ) -> Result<(), fidl::Error> {
13384        let _result = self.send_raw(result);
13385        self.drop_without_shutdown();
13386        _result
13387    }
13388
13389    fn send_raw(
13390        &self,
13391        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13392    ) -> Result<(), fidl::Error> {
13393        self.control_handle.inner.send::<fidl::encoding::ResultType<
13394            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13395            fidl_fuchsia_posix::Errno,
13396        >>(
13397            result.map(|value| (value,)),
13398            self.tx_id,
13399            0x4158ba7dc2795960,
13400            fidl::encoding::DynamicFlags::empty(),
13401        )
13402    }
13403}
13404
13405#[must_use = "FIDL methods require a response to be sent"]
13406#[derive(Debug)]
13407pub struct SocketSetIpReceiveTtlResponder {
13408    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13409    tx_id: u32,
13410}
13411
13412/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13413/// if the responder is dropped without sending a response, so that the client
13414/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13415impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13416    fn drop(&mut self) {
13417        self.control_handle.shutdown();
13418        // Safety: drops once, never accessed again
13419        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13420    }
13421}
13422
13423impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13424    type ControlHandle = SocketControlHandle;
13425
13426    fn control_handle(&self) -> &SocketControlHandle {
13427        &self.control_handle
13428    }
13429
13430    fn drop_without_shutdown(mut self) {
13431        // Safety: drops once, never accessed again due to mem::forget
13432        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13433        // Prevent Drop from running (which would shut down the channel)
13434        std::mem::forget(self);
13435    }
13436}
13437
13438impl SocketSetIpReceiveTtlResponder {
13439    /// Sends a response to the FIDL transaction.
13440    ///
13441    /// Sets the channel to shutdown if an error occurs.
13442    pub fn send(
13443        self,
13444        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13445    ) -> Result<(), fidl::Error> {
13446        let _result = self.send_raw(result);
13447        if _result.is_err() {
13448            self.control_handle.shutdown();
13449        }
13450        self.drop_without_shutdown();
13451        _result
13452    }
13453
13454    /// Similar to "send" but does not shutdown the channel if an error occurs.
13455    pub fn send_no_shutdown_on_err(
13456        self,
13457        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13458    ) -> Result<(), fidl::Error> {
13459        let _result = self.send_raw(result);
13460        self.drop_without_shutdown();
13461        _result
13462    }
13463
13464    fn send_raw(
13465        &self,
13466        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13467    ) -> Result<(), fidl::Error> {
13468        self.control_handle.inner.send::<fidl::encoding::ResultType<
13469            fidl::encoding::EmptyStruct,
13470            fidl_fuchsia_posix::Errno,
13471        >>(
13472            result,
13473            self.tx_id,
13474            0x46f15be0ce0ab82b,
13475            fidl::encoding::DynamicFlags::empty(),
13476        )
13477    }
13478}
13479
13480#[must_use = "FIDL methods require a response to be sent"]
13481#[derive(Debug)]
13482pub struct SocketGetIpReceiveTtlResponder {
13483    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13484    tx_id: u32,
13485}
13486
13487/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13488/// if the responder is dropped without sending a response, so that the client
13489/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13490impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13491    fn drop(&mut self) {
13492        self.control_handle.shutdown();
13493        // Safety: drops once, never accessed again
13494        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13495    }
13496}
13497
13498impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13499    type ControlHandle = SocketControlHandle;
13500
13501    fn control_handle(&self) -> &SocketControlHandle {
13502        &self.control_handle
13503    }
13504
13505    fn drop_without_shutdown(mut self) {
13506        // Safety: drops once, never accessed again due to mem::forget
13507        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13508        // Prevent Drop from running (which would shut down the channel)
13509        std::mem::forget(self);
13510    }
13511}
13512
13513impl SocketGetIpReceiveTtlResponder {
13514    /// Sends a response to the FIDL transaction.
13515    ///
13516    /// Sets the channel to shutdown if an error occurs.
13517    pub fn send(
13518        self,
13519        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13520    ) -> Result<(), fidl::Error> {
13521        let _result = self.send_raw(result);
13522        if _result.is_err() {
13523            self.control_handle.shutdown();
13524        }
13525        self.drop_without_shutdown();
13526        _result
13527    }
13528
13529    /// Similar to "send" but does not shutdown the channel if an error occurs.
13530    pub fn send_no_shutdown_on_err(
13531        self,
13532        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13533    ) -> Result<(), fidl::Error> {
13534        let _result = self.send_raw(result);
13535        self.drop_without_shutdown();
13536        _result
13537    }
13538
13539    fn send_raw(
13540        &self,
13541        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13542    ) -> Result<(), fidl::Error> {
13543        self.control_handle.inner.send::<fidl::encoding::ResultType<
13544            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13545            fidl_fuchsia_posix::Errno,
13546        >>(
13547            result.map(|value| (value,)),
13548            self.tx_id,
13549            0x678ddd5a5dfa2eb5,
13550            fidl::encoding::DynamicFlags::empty(),
13551        )
13552    }
13553}
13554
13555#[must_use = "FIDL methods require a response to be sent"]
13556#[derive(Debug)]
13557pub struct SocketSetIpMulticastInterfaceResponder {
13558    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13559    tx_id: u32,
13560}
13561
13562/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13563/// if the responder is dropped without sending a response, so that the client
13564/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13565impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13566    fn drop(&mut self) {
13567        self.control_handle.shutdown();
13568        // Safety: drops once, never accessed again
13569        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13570    }
13571}
13572
13573impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13574    type ControlHandle = SocketControlHandle;
13575
13576    fn control_handle(&self) -> &SocketControlHandle {
13577        &self.control_handle
13578    }
13579
13580    fn drop_without_shutdown(mut self) {
13581        // Safety: drops once, never accessed again due to mem::forget
13582        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13583        // Prevent Drop from running (which would shut down the channel)
13584        std::mem::forget(self);
13585    }
13586}
13587
13588impl SocketSetIpMulticastInterfaceResponder {
13589    /// Sends a response to the FIDL transaction.
13590    ///
13591    /// Sets the channel to shutdown if an error occurs.
13592    pub fn send(
13593        self,
13594        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13595    ) -> Result<(), fidl::Error> {
13596        let _result = self.send_raw(result);
13597        if _result.is_err() {
13598            self.control_handle.shutdown();
13599        }
13600        self.drop_without_shutdown();
13601        _result
13602    }
13603
13604    /// Similar to "send" but does not shutdown the channel if an error occurs.
13605    pub fn send_no_shutdown_on_err(
13606        self,
13607        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13608    ) -> Result<(), fidl::Error> {
13609        let _result = self.send_raw(result);
13610        self.drop_without_shutdown();
13611        _result
13612    }
13613
13614    fn send_raw(
13615        &self,
13616        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13617    ) -> Result<(), fidl::Error> {
13618        self.control_handle.inner.send::<fidl::encoding::ResultType<
13619            fidl::encoding::EmptyStruct,
13620            fidl_fuchsia_posix::Errno,
13621        >>(
13622            result,
13623            self.tx_id,
13624            0x752fbfa9b12befe,
13625            fidl::encoding::DynamicFlags::empty(),
13626        )
13627    }
13628}
13629
13630#[must_use = "FIDL methods require a response to be sent"]
13631#[derive(Debug)]
13632pub struct SocketGetIpMulticastInterfaceResponder {
13633    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13634    tx_id: u32,
13635}
13636
13637/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13638/// if the responder is dropped without sending a response, so that the client
13639/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13640impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13641    fn drop(&mut self) {
13642        self.control_handle.shutdown();
13643        // Safety: drops once, never accessed again
13644        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13645    }
13646}
13647
13648impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13649    type ControlHandle = SocketControlHandle;
13650
13651    fn control_handle(&self) -> &SocketControlHandle {
13652        &self.control_handle
13653    }
13654
13655    fn drop_without_shutdown(mut self) {
13656        // Safety: drops once, never accessed again due to mem::forget
13657        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13658        // Prevent Drop from running (which would shut down the channel)
13659        std::mem::forget(self);
13660    }
13661}
13662
13663impl SocketGetIpMulticastInterfaceResponder {
13664    /// Sends a response to the FIDL transaction.
13665    ///
13666    /// Sets the channel to shutdown if an error occurs.
13667    pub fn send(
13668        self,
13669        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13670    ) -> Result<(), fidl::Error> {
13671        let _result = self.send_raw(result);
13672        if _result.is_err() {
13673            self.control_handle.shutdown();
13674        }
13675        self.drop_without_shutdown();
13676        _result
13677    }
13678
13679    /// Similar to "send" but does not shutdown the channel if an error occurs.
13680    pub fn send_no_shutdown_on_err(
13681        self,
13682        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13683    ) -> Result<(), fidl::Error> {
13684        let _result = self.send_raw(result);
13685        self.drop_without_shutdown();
13686        _result
13687    }
13688
13689    fn send_raw(
13690        &self,
13691        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13692    ) -> Result<(), fidl::Error> {
13693        self.control_handle.inner.send::<fidl::encoding::ResultType<
13694            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13695            fidl_fuchsia_posix::Errno,
13696        >>(
13697            result.map(|value| (value,)),
13698            self.tx_id,
13699            0x320bd14c4df046c4,
13700            fidl::encoding::DynamicFlags::empty(),
13701        )
13702    }
13703}
13704
13705#[must_use = "FIDL methods require a response to be sent"]
13706#[derive(Debug)]
13707pub struct SocketSetIpMulticastTtlResponder {
13708    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13709    tx_id: u32,
13710}
13711
13712/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13713/// if the responder is dropped without sending a response, so that the client
13714/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13715impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13716    fn drop(&mut self) {
13717        self.control_handle.shutdown();
13718        // Safety: drops once, never accessed again
13719        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13720    }
13721}
13722
13723impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13724    type ControlHandle = SocketControlHandle;
13725
13726    fn control_handle(&self) -> &SocketControlHandle {
13727        &self.control_handle
13728    }
13729
13730    fn drop_without_shutdown(mut self) {
13731        // Safety: drops once, never accessed again due to mem::forget
13732        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13733        // Prevent Drop from running (which would shut down the channel)
13734        std::mem::forget(self);
13735    }
13736}
13737
13738impl SocketSetIpMulticastTtlResponder {
13739    /// Sends a response to the FIDL transaction.
13740    ///
13741    /// Sets the channel to shutdown if an error occurs.
13742    pub fn send(
13743        self,
13744        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13745    ) -> Result<(), fidl::Error> {
13746        let _result = self.send_raw(result);
13747        if _result.is_err() {
13748            self.control_handle.shutdown();
13749        }
13750        self.drop_without_shutdown();
13751        _result
13752    }
13753
13754    /// Similar to "send" but does not shutdown the channel if an error occurs.
13755    pub fn send_no_shutdown_on_err(
13756        self,
13757        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13758    ) -> Result<(), fidl::Error> {
13759        let _result = self.send_raw(result);
13760        self.drop_without_shutdown();
13761        _result
13762    }
13763
13764    fn send_raw(
13765        &self,
13766        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13767    ) -> Result<(), fidl::Error> {
13768        self.control_handle.inner.send::<fidl::encoding::ResultType<
13769            fidl::encoding::EmptyStruct,
13770            fidl_fuchsia_posix::Errno,
13771        >>(
13772            result,
13773            self.tx_id,
13774            0x63134d53772916a1,
13775            fidl::encoding::DynamicFlags::empty(),
13776        )
13777    }
13778}
13779
13780#[must_use = "FIDL methods require a response to be sent"]
13781#[derive(Debug)]
13782pub struct SocketGetIpMulticastTtlResponder {
13783    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13784    tx_id: u32,
13785}
13786
13787/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13788/// if the responder is dropped without sending a response, so that the client
13789/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13790impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13791    fn drop(&mut self) {
13792        self.control_handle.shutdown();
13793        // Safety: drops once, never accessed again
13794        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13795    }
13796}
13797
13798impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13799    type ControlHandle = SocketControlHandle;
13800
13801    fn control_handle(&self) -> &SocketControlHandle {
13802        &self.control_handle
13803    }
13804
13805    fn drop_without_shutdown(mut self) {
13806        // Safety: drops once, never accessed again due to mem::forget
13807        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13808        // Prevent Drop from running (which would shut down the channel)
13809        std::mem::forget(self);
13810    }
13811}
13812
13813impl SocketGetIpMulticastTtlResponder {
13814    /// Sends a response to the FIDL transaction.
13815    ///
13816    /// Sets the channel to shutdown if an error occurs.
13817    pub fn send(
13818        self,
13819        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13820    ) -> Result<(), fidl::Error> {
13821        let _result = self.send_raw(result);
13822        if _result.is_err() {
13823            self.control_handle.shutdown();
13824        }
13825        self.drop_without_shutdown();
13826        _result
13827    }
13828
13829    /// Similar to "send" but does not shutdown the channel if an error occurs.
13830    pub fn send_no_shutdown_on_err(
13831        self,
13832        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13833    ) -> Result<(), fidl::Error> {
13834        let _result = self.send_raw(result);
13835        self.drop_without_shutdown();
13836        _result
13837    }
13838
13839    fn send_raw(
13840        &self,
13841        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13842    ) -> Result<(), fidl::Error> {
13843        self.control_handle.inner.send::<fidl::encoding::ResultType<
13844            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13845            fidl_fuchsia_posix::Errno,
13846        >>(
13847            result.map(|value| (value,)),
13848            self.tx_id,
13849            0x4665cd378f39e1a,
13850            fidl::encoding::DynamicFlags::empty(),
13851        )
13852    }
13853}
13854
13855#[must_use = "FIDL methods require a response to be sent"]
13856#[derive(Debug)]
13857pub struct SocketSetIpMulticastLoopbackResponder {
13858    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13859    tx_id: u32,
13860}
13861
13862/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13863/// if the responder is dropped without sending a response, so that the client
13864/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13865impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13866    fn drop(&mut self) {
13867        self.control_handle.shutdown();
13868        // Safety: drops once, never accessed again
13869        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13870    }
13871}
13872
13873impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13874    type ControlHandle = SocketControlHandle;
13875
13876    fn control_handle(&self) -> &SocketControlHandle {
13877        &self.control_handle
13878    }
13879
13880    fn drop_without_shutdown(mut self) {
13881        // Safety: drops once, never accessed again due to mem::forget
13882        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13883        // Prevent Drop from running (which would shut down the channel)
13884        std::mem::forget(self);
13885    }
13886}
13887
13888impl SocketSetIpMulticastLoopbackResponder {
13889    /// Sends a response to the FIDL transaction.
13890    ///
13891    /// Sets the channel to shutdown if an error occurs.
13892    pub fn send(
13893        self,
13894        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13895    ) -> Result<(), fidl::Error> {
13896        let _result = self.send_raw(result);
13897        if _result.is_err() {
13898            self.control_handle.shutdown();
13899        }
13900        self.drop_without_shutdown();
13901        _result
13902    }
13903
13904    /// Similar to "send" but does not shutdown the channel if an error occurs.
13905    pub fn send_no_shutdown_on_err(
13906        self,
13907        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13908    ) -> Result<(), fidl::Error> {
13909        let _result = self.send_raw(result);
13910        self.drop_without_shutdown();
13911        _result
13912    }
13913
13914    fn send_raw(
13915        &self,
13916        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13917    ) -> Result<(), fidl::Error> {
13918        self.control_handle.inner.send::<fidl::encoding::ResultType<
13919            fidl::encoding::EmptyStruct,
13920            fidl_fuchsia_posix::Errno,
13921        >>(
13922            result,
13923            self.tx_id,
13924            0x20c55c11f00943ea,
13925            fidl::encoding::DynamicFlags::empty(),
13926        )
13927    }
13928}
13929
13930#[must_use = "FIDL methods require a response to be sent"]
13931#[derive(Debug)]
13932pub struct SocketGetIpMulticastLoopbackResponder {
13933    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13934    tx_id: u32,
13935}
13936
13937/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13938/// if the responder is dropped without sending a response, so that the client
13939/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13940impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13941    fn drop(&mut self) {
13942        self.control_handle.shutdown();
13943        // Safety: drops once, never accessed again
13944        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13945    }
13946}
13947
13948impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13949    type ControlHandle = SocketControlHandle;
13950
13951    fn control_handle(&self) -> &SocketControlHandle {
13952        &self.control_handle
13953    }
13954
13955    fn drop_without_shutdown(mut self) {
13956        // Safety: drops once, never accessed again due to mem::forget
13957        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13958        // Prevent Drop from running (which would shut down the channel)
13959        std::mem::forget(self);
13960    }
13961}
13962
13963impl SocketGetIpMulticastLoopbackResponder {
13964    /// Sends a response to the FIDL transaction.
13965    ///
13966    /// Sets the channel to shutdown if an error occurs.
13967    pub fn send(
13968        self,
13969        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13970    ) -> Result<(), fidl::Error> {
13971        let _result = self.send_raw(result);
13972        if _result.is_err() {
13973            self.control_handle.shutdown();
13974        }
13975        self.drop_without_shutdown();
13976        _result
13977    }
13978
13979    /// Similar to "send" but does not shutdown the channel if an error occurs.
13980    pub fn send_no_shutdown_on_err(
13981        self,
13982        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13983    ) -> Result<(), fidl::Error> {
13984        let _result = self.send_raw(result);
13985        self.drop_without_shutdown();
13986        _result
13987    }
13988
13989    fn send_raw(
13990        &self,
13991        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13992    ) -> Result<(), fidl::Error> {
13993        self.control_handle.inner.send::<fidl::encoding::ResultType<
13994            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
13995            fidl_fuchsia_posix::Errno,
13996        >>(
13997            result.map(|value| (value,)),
13998            self.tx_id,
13999            0x3b6b26ff558298f2,
14000            fidl::encoding::DynamicFlags::empty(),
14001        )
14002    }
14003}
14004
14005#[must_use = "FIDL methods require a response to be sent"]
14006#[derive(Debug)]
14007pub struct SocketAddIpMembershipResponder {
14008    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14009    tx_id: u32,
14010}
14011
14012/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14013/// if the responder is dropped without sending a response, so that the client
14014/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14015impl std::ops::Drop for SocketAddIpMembershipResponder {
14016    fn drop(&mut self) {
14017        self.control_handle.shutdown();
14018        // Safety: drops once, never accessed again
14019        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14020    }
14021}
14022
14023impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
14024    type ControlHandle = SocketControlHandle;
14025
14026    fn control_handle(&self) -> &SocketControlHandle {
14027        &self.control_handle
14028    }
14029
14030    fn drop_without_shutdown(mut self) {
14031        // Safety: drops once, never accessed again due to mem::forget
14032        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14033        // Prevent Drop from running (which would shut down the channel)
14034        std::mem::forget(self);
14035    }
14036}
14037
14038impl SocketAddIpMembershipResponder {
14039    /// Sends a response to the FIDL transaction.
14040    ///
14041    /// Sets the channel to shutdown if an error occurs.
14042    pub fn send(
14043        self,
14044        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14045    ) -> Result<(), fidl::Error> {
14046        let _result = self.send_raw(result);
14047        if _result.is_err() {
14048            self.control_handle.shutdown();
14049        }
14050        self.drop_without_shutdown();
14051        _result
14052    }
14053
14054    /// Similar to "send" but does not shutdown the channel if an error occurs.
14055    pub fn send_no_shutdown_on_err(
14056        self,
14057        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14058    ) -> Result<(), fidl::Error> {
14059        let _result = self.send_raw(result);
14060        self.drop_without_shutdown();
14061        _result
14062    }
14063
14064    fn send_raw(
14065        &self,
14066        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14067    ) -> Result<(), fidl::Error> {
14068        self.control_handle.inner.send::<fidl::encoding::ResultType<
14069            fidl::encoding::EmptyStruct,
14070            fidl_fuchsia_posix::Errno,
14071        >>(
14072            result,
14073            self.tx_id,
14074            0x76bc7df115a3b4d0,
14075            fidl::encoding::DynamicFlags::empty(),
14076        )
14077    }
14078}
14079
14080#[must_use = "FIDL methods require a response to be sent"]
14081#[derive(Debug)]
14082pub struct SocketDropIpMembershipResponder {
14083    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14084    tx_id: u32,
14085}
14086
14087/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14088/// if the responder is dropped without sending a response, so that the client
14089/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14090impl std::ops::Drop for SocketDropIpMembershipResponder {
14091    fn drop(&mut self) {
14092        self.control_handle.shutdown();
14093        // Safety: drops once, never accessed again
14094        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14095    }
14096}
14097
14098impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
14099    type ControlHandle = SocketControlHandle;
14100
14101    fn control_handle(&self) -> &SocketControlHandle {
14102        &self.control_handle
14103    }
14104
14105    fn drop_without_shutdown(mut self) {
14106        // Safety: drops once, never accessed again due to mem::forget
14107        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14108        // Prevent Drop from running (which would shut down the channel)
14109        std::mem::forget(self);
14110    }
14111}
14112
14113impl SocketDropIpMembershipResponder {
14114    /// Sends a response to the FIDL transaction.
14115    ///
14116    /// Sets the channel to shutdown if an error occurs.
14117    pub fn send(
14118        self,
14119        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14120    ) -> Result<(), fidl::Error> {
14121        let _result = self.send_raw(result);
14122        if _result.is_err() {
14123            self.control_handle.shutdown();
14124        }
14125        self.drop_without_shutdown();
14126        _result
14127    }
14128
14129    /// Similar to "send" but does not shutdown the channel if an error occurs.
14130    pub fn send_no_shutdown_on_err(
14131        self,
14132        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14133    ) -> Result<(), fidl::Error> {
14134        let _result = self.send_raw(result);
14135        self.drop_without_shutdown();
14136        _result
14137    }
14138
14139    fn send_raw(
14140        &self,
14141        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14142    ) -> Result<(), fidl::Error> {
14143        self.control_handle.inner.send::<fidl::encoding::ResultType<
14144            fidl::encoding::EmptyStruct,
14145            fidl_fuchsia_posix::Errno,
14146        >>(
14147            result,
14148            self.tx_id,
14149            0x2888f3099188d03,
14150            fidl::encoding::DynamicFlags::empty(),
14151        )
14152    }
14153}
14154
14155#[must_use = "FIDL methods require a response to be sent"]
14156#[derive(Debug)]
14157pub struct SocketSetIpTransparentResponder {
14158    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14159    tx_id: u32,
14160}
14161
14162/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14163/// if the responder is dropped without sending a response, so that the client
14164/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14165impl std::ops::Drop for SocketSetIpTransparentResponder {
14166    fn drop(&mut self) {
14167        self.control_handle.shutdown();
14168        // Safety: drops once, never accessed again
14169        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14170    }
14171}
14172
14173impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
14174    type ControlHandle = SocketControlHandle;
14175
14176    fn control_handle(&self) -> &SocketControlHandle {
14177        &self.control_handle
14178    }
14179
14180    fn drop_without_shutdown(mut self) {
14181        // Safety: drops once, never accessed again due to mem::forget
14182        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14183        // Prevent Drop from running (which would shut down the channel)
14184        std::mem::forget(self);
14185    }
14186}
14187
14188impl SocketSetIpTransparentResponder {
14189    /// Sends a response to the FIDL transaction.
14190    ///
14191    /// Sets the channel to shutdown if an error occurs.
14192    pub fn send(
14193        self,
14194        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14195    ) -> Result<(), fidl::Error> {
14196        let _result = self.send_raw(result);
14197        if _result.is_err() {
14198            self.control_handle.shutdown();
14199        }
14200        self.drop_without_shutdown();
14201        _result
14202    }
14203
14204    /// Similar to "send" but does not shutdown the channel if an error occurs.
14205    pub fn send_no_shutdown_on_err(
14206        self,
14207        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14208    ) -> Result<(), fidl::Error> {
14209        let _result = self.send_raw(result);
14210        self.drop_without_shutdown();
14211        _result
14212    }
14213
14214    fn send_raw(
14215        &self,
14216        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14217    ) -> Result<(), fidl::Error> {
14218        self.control_handle.inner.send::<fidl::encoding::ResultType<
14219            fidl::encoding::EmptyStruct,
14220            fidl_fuchsia_posix::Errno,
14221        >>(
14222            result,
14223            self.tx_id,
14224            0x1ae532b0c066e3a0,
14225            fidl::encoding::DynamicFlags::empty(),
14226        )
14227    }
14228}
14229
14230#[must_use = "FIDL methods require a response to be sent"]
14231#[derive(Debug)]
14232pub struct SocketGetIpTransparentResponder {
14233    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14234    tx_id: u32,
14235}
14236
14237/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14238/// if the responder is dropped without sending a response, so that the client
14239/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14240impl std::ops::Drop for SocketGetIpTransparentResponder {
14241    fn drop(&mut self) {
14242        self.control_handle.shutdown();
14243        // Safety: drops once, never accessed again
14244        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14245    }
14246}
14247
14248impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
14249    type ControlHandle = SocketControlHandle;
14250
14251    fn control_handle(&self) -> &SocketControlHandle {
14252        &self.control_handle
14253    }
14254
14255    fn drop_without_shutdown(mut self) {
14256        // Safety: drops once, never accessed again due to mem::forget
14257        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14258        // Prevent Drop from running (which would shut down the channel)
14259        std::mem::forget(self);
14260    }
14261}
14262
14263impl SocketGetIpTransparentResponder {
14264    /// Sends a response to the FIDL transaction.
14265    ///
14266    /// Sets the channel to shutdown if an error occurs.
14267    pub fn send(
14268        self,
14269        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14270    ) -> Result<(), fidl::Error> {
14271        let _result = self.send_raw(result);
14272        if _result.is_err() {
14273            self.control_handle.shutdown();
14274        }
14275        self.drop_without_shutdown();
14276        _result
14277    }
14278
14279    /// Similar to "send" but does not shutdown the channel if an error occurs.
14280    pub fn send_no_shutdown_on_err(
14281        self,
14282        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14283    ) -> Result<(), fidl::Error> {
14284        let _result = self.send_raw(result);
14285        self.drop_without_shutdown();
14286        _result
14287    }
14288
14289    fn send_raw(
14290        &self,
14291        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14292    ) -> Result<(), fidl::Error> {
14293        self.control_handle.inner.send::<fidl::encoding::ResultType<
14294            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
14295            fidl_fuchsia_posix::Errno,
14296        >>(
14297            result.map(|value| (value,)),
14298            self.tx_id,
14299            0x51d43695962ebfb5,
14300            fidl::encoding::DynamicFlags::empty(),
14301        )
14302    }
14303}
14304
14305#[must_use = "FIDL methods require a response to be sent"]
14306#[derive(Debug)]
14307pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14308    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14309    tx_id: u32,
14310}
14311
14312/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14313/// if the responder is dropped without sending a response, so that the client
14314/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14315impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14316    fn drop(&mut self) {
14317        self.control_handle.shutdown();
14318        // Safety: drops once, never accessed again
14319        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14320    }
14321}
14322
14323impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14324    type ControlHandle = SocketControlHandle;
14325
14326    fn control_handle(&self) -> &SocketControlHandle {
14327        &self.control_handle
14328    }
14329
14330    fn drop_without_shutdown(mut self) {
14331        // Safety: drops once, never accessed again due to mem::forget
14332        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14333        // Prevent Drop from running (which would shut down the channel)
14334        std::mem::forget(self);
14335    }
14336}
14337
14338impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14339    /// Sends a response to the FIDL transaction.
14340    ///
14341    /// Sets the channel to shutdown if an error occurs.
14342    pub fn send(
14343        self,
14344        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14345    ) -> Result<(), fidl::Error> {
14346        let _result = self.send_raw(result);
14347        if _result.is_err() {
14348            self.control_handle.shutdown();
14349        }
14350        self.drop_without_shutdown();
14351        _result
14352    }
14353
14354    /// Similar to "send" but does not shutdown the channel if an error occurs.
14355    pub fn send_no_shutdown_on_err(
14356        self,
14357        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14358    ) -> Result<(), fidl::Error> {
14359        let _result = self.send_raw(result);
14360        self.drop_without_shutdown();
14361        _result
14362    }
14363
14364    fn send_raw(
14365        &self,
14366        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14367    ) -> Result<(), fidl::Error> {
14368        self.control_handle.inner.send::<fidl::encoding::ResultType<
14369            fidl::encoding::EmptyStruct,
14370            fidl_fuchsia_posix::Errno,
14371        >>(
14372            result,
14373            self.tx_id,
14374            0x4722b4ce52f7840,
14375            fidl::encoding::DynamicFlags::empty(),
14376        )
14377    }
14378}
14379
14380#[must_use = "FIDL methods require a response to be sent"]
14381#[derive(Debug)]
14382pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14383    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14384    tx_id: u32,
14385}
14386
14387/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14388/// if the responder is dropped without sending a response, so that the client
14389/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14390impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14391    fn drop(&mut self) {
14392        self.control_handle.shutdown();
14393        // Safety: drops once, never accessed again
14394        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14395    }
14396}
14397
14398impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14399    type ControlHandle = SocketControlHandle;
14400
14401    fn control_handle(&self) -> &SocketControlHandle {
14402        &self.control_handle
14403    }
14404
14405    fn drop_without_shutdown(mut self) {
14406        // Safety: drops once, never accessed again due to mem::forget
14407        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14408        // Prevent Drop from running (which would shut down the channel)
14409        std::mem::forget(self);
14410    }
14411}
14412
14413impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14414    /// Sends a response to the FIDL transaction.
14415    ///
14416    /// Sets the channel to shutdown if an error occurs.
14417    pub fn send(
14418        self,
14419        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14420    ) -> Result<(), fidl::Error> {
14421        let _result = self.send_raw(result);
14422        if _result.is_err() {
14423            self.control_handle.shutdown();
14424        }
14425        self.drop_without_shutdown();
14426        _result
14427    }
14428
14429    /// Similar to "send" but does not shutdown the channel if an error occurs.
14430    pub fn send_no_shutdown_on_err(
14431        self,
14432        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14433    ) -> Result<(), fidl::Error> {
14434        let _result = self.send_raw(result);
14435        self.drop_without_shutdown();
14436        _result
14437    }
14438
14439    fn send_raw(
14440        &self,
14441        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14442    ) -> Result<(), fidl::Error> {
14443        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14444            result.map(|value| (value,)),
14445            self.tx_id,
14446            0x2a0e7dc5d6bfdfe9,
14447            fidl::encoding::DynamicFlags::empty()
14448        )
14449    }
14450}
14451
14452#[must_use = "FIDL methods require a response to be sent"]
14453#[derive(Debug)]
14454pub struct SocketAddIpv6MembershipResponder {
14455    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14456    tx_id: u32,
14457}
14458
14459/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14460/// if the responder is dropped without sending a response, so that the client
14461/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14462impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14463    fn drop(&mut self) {
14464        self.control_handle.shutdown();
14465        // Safety: drops once, never accessed again
14466        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14467    }
14468}
14469
14470impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14471    type ControlHandle = SocketControlHandle;
14472
14473    fn control_handle(&self) -> &SocketControlHandle {
14474        &self.control_handle
14475    }
14476
14477    fn drop_without_shutdown(mut self) {
14478        // Safety: drops once, never accessed again due to mem::forget
14479        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14480        // Prevent Drop from running (which would shut down the channel)
14481        std::mem::forget(self);
14482    }
14483}
14484
14485impl SocketAddIpv6MembershipResponder {
14486    /// Sends a response to the FIDL transaction.
14487    ///
14488    /// Sets the channel to shutdown if an error occurs.
14489    pub fn send(
14490        self,
14491        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14492    ) -> Result<(), fidl::Error> {
14493        let _result = self.send_raw(result);
14494        if _result.is_err() {
14495            self.control_handle.shutdown();
14496        }
14497        self.drop_without_shutdown();
14498        _result
14499    }
14500
14501    /// Similar to "send" but does not shutdown the channel if an error occurs.
14502    pub fn send_no_shutdown_on_err(
14503        self,
14504        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14505    ) -> Result<(), fidl::Error> {
14506        let _result = self.send_raw(result);
14507        self.drop_without_shutdown();
14508        _result
14509    }
14510
14511    fn send_raw(
14512        &self,
14513        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14514    ) -> Result<(), fidl::Error> {
14515        self.control_handle.inner.send::<fidl::encoding::ResultType<
14516            fidl::encoding::EmptyStruct,
14517            fidl_fuchsia_posix::Errno,
14518        >>(
14519            result,
14520            self.tx_id,
14521            0x7c94727acb4ea4b3,
14522            fidl::encoding::DynamicFlags::empty(),
14523        )
14524    }
14525}
14526
14527#[must_use = "FIDL methods require a response to be sent"]
14528#[derive(Debug)]
14529pub struct SocketDropIpv6MembershipResponder {
14530    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14531    tx_id: u32,
14532}
14533
14534/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14535/// if the responder is dropped without sending a response, so that the client
14536/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14537impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14538    fn drop(&mut self) {
14539        self.control_handle.shutdown();
14540        // Safety: drops once, never accessed again
14541        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14542    }
14543}
14544
14545impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14546    type ControlHandle = SocketControlHandle;
14547
14548    fn control_handle(&self) -> &SocketControlHandle {
14549        &self.control_handle
14550    }
14551
14552    fn drop_without_shutdown(mut self) {
14553        // Safety: drops once, never accessed again due to mem::forget
14554        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14555        // Prevent Drop from running (which would shut down the channel)
14556        std::mem::forget(self);
14557    }
14558}
14559
14560impl SocketDropIpv6MembershipResponder {
14561    /// Sends a response to the FIDL transaction.
14562    ///
14563    /// Sets the channel to shutdown if an error occurs.
14564    pub fn send(
14565        self,
14566        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14567    ) -> Result<(), fidl::Error> {
14568        let _result = self.send_raw(result);
14569        if _result.is_err() {
14570            self.control_handle.shutdown();
14571        }
14572        self.drop_without_shutdown();
14573        _result
14574    }
14575
14576    /// Similar to "send" but does not shutdown the channel if an error occurs.
14577    pub fn send_no_shutdown_on_err(
14578        self,
14579        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14580    ) -> Result<(), fidl::Error> {
14581        let _result = self.send_raw(result);
14582        self.drop_without_shutdown();
14583        _result
14584    }
14585
14586    fn send_raw(
14587        &self,
14588        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14589    ) -> Result<(), fidl::Error> {
14590        self.control_handle.inner.send::<fidl::encoding::ResultType<
14591            fidl::encoding::EmptyStruct,
14592            fidl_fuchsia_posix::Errno,
14593        >>(
14594            result,
14595            self.tx_id,
14596            0x42104c70ccaba304,
14597            fidl::encoding::DynamicFlags::empty(),
14598        )
14599    }
14600}
14601
14602#[must_use = "FIDL methods require a response to be sent"]
14603#[derive(Debug)]
14604pub struct SocketSetIpv6MulticastInterfaceResponder {
14605    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14606    tx_id: u32,
14607}
14608
14609/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14610/// if the responder is dropped without sending a response, so that the client
14611/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14612impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14613    fn drop(&mut self) {
14614        self.control_handle.shutdown();
14615        // Safety: drops once, never accessed again
14616        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14617    }
14618}
14619
14620impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14621    type ControlHandle = SocketControlHandle;
14622
14623    fn control_handle(&self) -> &SocketControlHandle {
14624        &self.control_handle
14625    }
14626
14627    fn drop_without_shutdown(mut self) {
14628        // Safety: drops once, never accessed again due to mem::forget
14629        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14630        // Prevent Drop from running (which would shut down the channel)
14631        std::mem::forget(self);
14632    }
14633}
14634
14635impl SocketSetIpv6MulticastInterfaceResponder {
14636    /// Sends a response to the FIDL transaction.
14637    ///
14638    /// Sets the channel to shutdown if an error occurs.
14639    pub fn send(
14640        self,
14641        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14642    ) -> Result<(), fidl::Error> {
14643        let _result = self.send_raw(result);
14644        if _result.is_err() {
14645            self.control_handle.shutdown();
14646        }
14647        self.drop_without_shutdown();
14648        _result
14649    }
14650
14651    /// Similar to "send" but does not shutdown the channel if an error occurs.
14652    pub fn send_no_shutdown_on_err(
14653        self,
14654        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14655    ) -> Result<(), fidl::Error> {
14656        let _result = self.send_raw(result);
14657        self.drop_without_shutdown();
14658        _result
14659    }
14660
14661    fn send_raw(
14662        &self,
14663        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14664    ) -> Result<(), fidl::Error> {
14665        self.control_handle.inner.send::<fidl::encoding::ResultType<
14666            fidl::encoding::EmptyStruct,
14667            fidl_fuchsia_posix::Errno,
14668        >>(
14669            result,
14670            self.tx_id,
14671            0x135f76db3774ab3b,
14672            fidl::encoding::DynamicFlags::empty(),
14673        )
14674    }
14675}
14676
14677#[must_use = "FIDL methods require a response to be sent"]
14678#[derive(Debug)]
14679pub struct SocketGetIpv6MulticastInterfaceResponder {
14680    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14681    tx_id: u32,
14682}
14683
14684/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14685/// if the responder is dropped without sending a response, so that the client
14686/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14687impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14688    fn drop(&mut self) {
14689        self.control_handle.shutdown();
14690        // Safety: drops once, never accessed again
14691        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14692    }
14693}
14694
14695impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14696    type ControlHandle = SocketControlHandle;
14697
14698    fn control_handle(&self) -> &SocketControlHandle {
14699        &self.control_handle
14700    }
14701
14702    fn drop_without_shutdown(mut self) {
14703        // Safety: drops once, never accessed again due to mem::forget
14704        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14705        // Prevent Drop from running (which would shut down the channel)
14706        std::mem::forget(self);
14707    }
14708}
14709
14710impl SocketGetIpv6MulticastInterfaceResponder {
14711    /// Sends a response to the FIDL transaction.
14712    ///
14713    /// Sets the channel to shutdown if an error occurs.
14714    pub fn send(
14715        self,
14716        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14717    ) -> Result<(), fidl::Error> {
14718        let _result = self.send_raw(result);
14719        if _result.is_err() {
14720            self.control_handle.shutdown();
14721        }
14722        self.drop_without_shutdown();
14723        _result
14724    }
14725
14726    /// Similar to "send" but does not shutdown the channel if an error occurs.
14727    pub fn send_no_shutdown_on_err(
14728        self,
14729        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14730    ) -> Result<(), fidl::Error> {
14731        let _result = self.send_raw(result);
14732        self.drop_without_shutdown();
14733        _result
14734    }
14735
14736    fn send_raw(
14737        &self,
14738        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14739    ) -> Result<(), fidl::Error> {
14740        self.control_handle.inner.send::<fidl::encoding::ResultType<
14741            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14742            fidl_fuchsia_posix::Errno,
14743        >>(
14744            result.map(|value| (value,)),
14745            self.tx_id,
14746            0x1f26fcdd348f1882,
14747            fidl::encoding::DynamicFlags::empty(),
14748        )
14749    }
14750}
14751
14752#[must_use = "FIDL methods require a response to be sent"]
14753#[derive(Debug)]
14754pub struct SocketSetIpv6UnicastHopsResponder {
14755    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14756    tx_id: u32,
14757}
14758
14759/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14760/// if the responder is dropped without sending a response, so that the client
14761/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14762impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14763    fn drop(&mut self) {
14764        self.control_handle.shutdown();
14765        // Safety: drops once, never accessed again
14766        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14767    }
14768}
14769
14770impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14771    type ControlHandle = SocketControlHandle;
14772
14773    fn control_handle(&self) -> &SocketControlHandle {
14774        &self.control_handle
14775    }
14776
14777    fn drop_without_shutdown(mut self) {
14778        // Safety: drops once, never accessed again due to mem::forget
14779        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14780        // Prevent Drop from running (which would shut down the channel)
14781        std::mem::forget(self);
14782    }
14783}
14784
14785impl SocketSetIpv6UnicastHopsResponder {
14786    /// Sends a response to the FIDL transaction.
14787    ///
14788    /// Sets the channel to shutdown if an error occurs.
14789    pub fn send(
14790        self,
14791        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14792    ) -> Result<(), fidl::Error> {
14793        let _result = self.send_raw(result);
14794        if _result.is_err() {
14795            self.control_handle.shutdown();
14796        }
14797        self.drop_without_shutdown();
14798        _result
14799    }
14800
14801    /// Similar to "send" but does not shutdown the channel if an error occurs.
14802    pub fn send_no_shutdown_on_err(
14803        self,
14804        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14805    ) -> Result<(), fidl::Error> {
14806        let _result = self.send_raw(result);
14807        self.drop_without_shutdown();
14808        _result
14809    }
14810
14811    fn send_raw(
14812        &self,
14813        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14814    ) -> Result<(), fidl::Error> {
14815        self.control_handle.inner.send::<fidl::encoding::ResultType<
14816            fidl::encoding::EmptyStruct,
14817            fidl_fuchsia_posix::Errno,
14818        >>(
14819            result,
14820            self.tx_id,
14821            0x157d51e98f462859,
14822            fidl::encoding::DynamicFlags::empty(),
14823        )
14824    }
14825}
14826
14827#[must_use = "FIDL methods require a response to be sent"]
14828#[derive(Debug)]
14829pub struct SocketGetIpv6UnicastHopsResponder {
14830    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14831    tx_id: u32,
14832}
14833
14834/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14835/// if the responder is dropped without sending a response, so that the client
14836/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14837impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14838    fn drop(&mut self) {
14839        self.control_handle.shutdown();
14840        // Safety: drops once, never accessed again
14841        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14842    }
14843}
14844
14845impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14846    type ControlHandle = SocketControlHandle;
14847
14848    fn control_handle(&self) -> &SocketControlHandle {
14849        &self.control_handle
14850    }
14851
14852    fn drop_without_shutdown(mut self) {
14853        // Safety: drops once, never accessed again due to mem::forget
14854        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14855        // Prevent Drop from running (which would shut down the channel)
14856        std::mem::forget(self);
14857    }
14858}
14859
14860impl SocketGetIpv6UnicastHopsResponder {
14861    /// Sends a response to the FIDL transaction.
14862    ///
14863    /// Sets the channel to shutdown if an error occurs.
14864    pub fn send(
14865        self,
14866        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14867    ) -> Result<(), fidl::Error> {
14868        let _result = self.send_raw(result);
14869        if _result.is_err() {
14870            self.control_handle.shutdown();
14871        }
14872        self.drop_without_shutdown();
14873        _result
14874    }
14875
14876    /// Similar to "send" but does not shutdown the channel if an error occurs.
14877    pub fn send_no_shutdown_on_err(
14878        self,
14879        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14880    ) -> Result<(), fidl::Error> {
14881        let _result = self.send_raw(result);
14882        self.drop_without_shutdown();
14883        _result
14884    }
14885
14886    fn send_raw(
14887        &self,
14888        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14889    ) -> Result<(), fidl::Error> {
14890        self.control_handle.inner.send::<fidl::encoding::ResultType<
14891            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14892            fidl_fuchsia_posix::Errno,
14893        >>(
14894            result.map(|value| (value,)),
14895            self.tx_id,
14896            0x21f4641cad8bd8d2,
14897            fidl::encoding::DynamicFlags::empty(),
14898        )
14899    }
14900}
14901
14902#[must_use = "FIDL methods require a response to be sent"]
14903#[derive(Debug)]
14904pub struct SocketSetIpv6ReceiveHopLimitResponder {
14905    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14906    tx_id: u32,
14907}
14908
14909/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14910/// if the responder is dropped without sending a response, so that the client
14911/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14912impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14913    fn drop(&mut self) {
14914        self.control_handle.shutdown();
14915        // Safety: drops once, never accessed again
14916        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14917    }
14918}
14919
14920impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14921    type ControlHandle = SocketControlHandle;
14922
14923    fn control_handle(&self) -> &SocketControlHandle {
14924        &self.control_handle
14925    }
14926
14927    fn drop_without_shutdown(mut self) {
14928        // Safety: drops once, never accessed again due to mem::forget
14929        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14930        // Prevent Drop from running (which would shut down the channel)
14931        std::mem::forget(self);
14932    }
14933}
14934
14935impl SocketSetIpv6ReceiveHopLimitResponder {
14936    /// Sends a response to the FIDL transaction.
14937    ///
14938    /// Sets the channel to shutdown if an error occurs.
14939    pub fn send(
14940        self,
14941        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14942    ) -> Result<(), fidl::Error> {
14943        let _result = self.send_raw(result);
14944        if _result.is_err() {
14945            self.control_handle.shutdown();
14946        }
14947        self.drop_without_shutdown();
14948        _result
14949    }
14950
14951    /// Similar to "send" but does not shutdown the channel if an error occurs.
14952    pub fn send_no_shutdown_on_err(
14953        self,
14954        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14955    ) -> Result<(), fidl::Error> {
14956        let _result = self.send_raw(result);
14957        self.drop_without_shutdown();
14958        _result
14959    }
14960
14961    fn send_raw(
14962        &self,
14963        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14964    ) -> Result<(), fidl::Error> {
14965        self.control_handle.inner.send::<fidl::encoding::ResultType<
14966            fidl::encoding::EmptyStruct,
14967            fidl_fuchsia_posix::Errno,
14968        >>(
14969            result,
14970            self.tx_id,
14971            0x5c24808ed2e84a1e,
14972            fidl::encoding::DynamicFlags::empty(),
14973        )
14974    }
14975}
14976
14977#[must_use = "FIDL methods require a response to be sent"]
14978#[derive(Debug)]
14979pub struct SocketGetIpv6ReceiveHopLimitResponder {
14980    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14981    tx_id: u32,
14982}
14983
14984/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14985/// if the responder is dropped without sending a response, so that the client
14986/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14987impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
14988    fn drop(&mut self) {
14989        self.control_handle.shutdown();
14990        // Safety: drops once, never accessed again
14991        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14992    }
14993}
14994
14995impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
14996    type ControlHandle = SocketControlHandle;
14997
14998    fn control_handle(&self) -> &SocketControlHandle {
14999        &self.control_handle
15000    }
15001
15002    fn drop_without_shutdown(mut self) {
15003        // Safety: drops once, never accessed again due to mem::forget
15004        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15005        // Prevent Drop from running (which would shut down the channel)
15006        std::mem::forget(self);
15007    }
15008}
15009
15010impl SocketGetIpv6ReceiveHopLimitResponder {
15011    /// Sends a response to the FIDL transaction.
15012    ///
15013    /// Sets the channel to shutdown if an error occurs.
15014    pub fn send(
15015        self,
15016        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15017    ) -> Result<(), fidl::Error> {
15018        let _result = self.send_raw(result);
15019        if _result.is_err() {
15020            self.control_handle.shutdown();
15021        }
15022        self.drop_without_shutdown();
15023        _result
15024    }
15025
15026    /// Similar to "send" but does not shutdown the channel if an error occurs.
15027    pub fn send_no_shutdown_on_err(
15028        self,
15029        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15030    ) -> Result<(), fidl::Error> {
15031        let _result = self.send_raw(result);
15032        self.drop_without_shutdown();
15033        _result
15034    }
15035
15036    fn send_raw(
15037        &self,
15038        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15039    ) -> Result<(), fidl::Error> {
15040        self.control_handle.inner.send::<fidl::encoding::ResultType<
15041            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
15042            fidl_fuchsia_posix::Errno,
15043        >>(
15044            result.map(|value| (value,)),
15045            self.tx_id,
15046            0x341e06689885b4c0,
15047            fidl::encoding::DynamicFlags::empty(),
15048        )
15049    }
15050}
15051
15052#[must_use = "FIDL methods require a response to be sent"]
15053#[derive(Debug)]
15054pub struct SocketSetIpv6MulticastHopsResponder {
15055    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15056    tx_id: u32,
15057}
15058
15059/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15060/// if the responder is dropped without sending a response, so that the client
15061/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15062impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
15063    fn drop(&mut self) {
15064        self.control_handle.shutdown();
15065        // Safety: drops once, never accessed again
15066        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15067    }
15068}
15069
15070impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
15071    type ControlHandle = SocketControlHandle;
15072
15073    fn control_handle(&self) -> &SocketControlHandle {
15074        &self.control_handle
15075    }
15076
15077    fn drop_without_shutdown(mut self) {
15078        // Safety: drops once, never accessed again due to mem::forget
15079        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15080        // Prevent Drop from running (which would shut down the channel)
15081        std::mem::forget(self);
15082    }
15083}
15084
15085impl SocketSetIpv6MulticastHopsResponder {
15086    /// Sends a response to the FIDL transaction.
15087    ///
15088    /// Sets the channel to shutdown if an error occurs.
15089    pub fn send(
15090        self,
15091        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15092    ) -> Result<(), fidl::Error> {
15093        let _result = self.send_raw(result);
15094        if _result.is_err() {
15095            self.control_handle.shutdown();
15096        }
15097        self.drop_without_shutdown();
15098        _result
15099    }
15100
15101    /// Similar to "send" but does not shutdown the channel if an error occurs.
15102    pub fn send_no_shutdown_on_err(
15103        self,
15104        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15105    ) -> Result<(), fidl::Error> {
15106        let _result = self.send_raw(result);
15107        self.drop_without_shutdown();
15108        _result
15109    }
15110
15111    fn send_raw(
15112        &self,
15113        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15114    ) -> Result<(), fidl::Error> {
15115        self.control_handle.inner.send::<fidl::encoding::ResultType<
15116            fidl::encoding::EmptyStruct,
15117            fidl_fuchsia_posix::Errno,
15118        >>(
15119            result,
15120            self.tx_id,
15121            0x25b9cd4d181f82c1,
15122            fidl::encoding::DynamicFlags::empty(),
15123        )
15124    }
15125}
15126
15127#[must_use = "FIDL methods require a response to be sent"]
15128#[derive(Debug)]
15129pub struct SocketGetIpv6MulticastHopsResponder {
15130    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15131    tx_id: u32,
15132}
15133
15134/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15135/// if the responder is dropped without sending a response, so that the client
15136/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15137impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
15138    fn drop(&mut self) {
15139        self.control_handle.shutdown();
15140        // Safety: drops once, never accessed again
15141        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15142    }
15143}
15144
15145impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
15146    type ControlHandle = SocketControlHandle;
15147
15148    fn control_handle(&self) -> &SocketControlHandle {
15149        &self.control_handle
15150    }
15151
15152    fn drop_without_shutdown(mut self) {
15153        // Safety: drops once, never accessed again due to mem::forget
15154        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15155        // Prevent Drop from running (which would shut down the channel)
15156        std::mem::forget(self);
15157    }
15158}
15159
15160impl SocketGetIpv6MulticastHopsResponder {
15161    /// Sends a response to the FIDL transaction.
15162    ///
15163    /// Sets the channel to shutdown if an error occurs.
15164    pub fn send(
15165        self,
15166        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15167    ) -> Result<(), fidl::Error> {
15168        let _result = self.send_raw(result);
15169        if _result.is_err() {
15170            self.control_handle.shutdown();
15171        }
15172        self.drop_without_shutdown();
15173        _result
15174    }
15175
15176    /// Similar to "send" but does not shutdown the channel if an error occurs.
15177    pub fn send_no_shutdown_on_err(
15178        self,
15179        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15180    ) -> Result<(), fidl::Error> {
15181        let _result = self.send_raw(result);
15182        self.drop_without_shutdown();
15183        _result
15184    }
15185
15186    fn send_raw(
15187        &self,
15188        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15189    ) -> Result<(), fidl::Error> {
15190        self.control_handle.inner.send::<fidl::encoding::ResultType<
15191            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
15192            fidl_fuchsia_posix::Errno,
15193        >>(
15194            result.map(|value| (value,)),
15195            self.tx_id,
15196            0x52916948a365012a,
15197            fidl::encoding::DynamicFlags::empty(),
15198        )
15199    }
15200}
15201
15202#[must_use = "FIDL methods require a response to be sent"]
15203#[derive(Debug)]
15204pub struct SocketSetIpv6MulticastLoopbackResponder {
15205    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15206    tx_id: u32,
15207}
15208
15209/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15210/// if the responder is dropped without sending a response, so that the client
15211/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15212impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
15213    fn drop(&mut self) {
15214        self.control_handle.shutdown();
15215        // Safety: drops once, never accessed again
15216        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15217    }
15218}
15219
15220impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
15221    type ControlHandle = SocketControlHandle;
15222
15223    fn control_handle(&self) -> &SocketControlHandle {
15224        &self.control_handle
15225    }
15226
15227    fn drop_without_shutdown(mut self) {
15228        // Safety: drops once, never accessed again due to mem::forget
15229        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15230        // Prevent Drop from running (which would shut down the channel)
15231        std::mem::forget(self);
15232    }
15233}
15234
15235impl SocketSetIpv6MulticastLoopbackResponder {
15236    /// Sends a response to the FIDL transaction.
15237    ///
15238    /// Sets the channel to shutdown if an error occurs.
15239    pub fn send(
15240        self,
15241        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15242    ) -> Result<(), fidl::Error> {
15243        let _result = self.send_raw(result);
15244        if _result.is_err() {
15245            self.control_handle.shutdown();
15246        }
15247        self.drop_without_shutdown();
15248        _result
15249    }
15250
15251    /// Similar to "send" but does not shutdown the channel if an error occurs.
15252    pub fn send_no_shutdown_on_err(
15253        self,
15254        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15255    ) -> Result<(), fidl::Error> {
15256        let _result = self.send_raw(result);
15257        self.drop_without_shutdown();
15258        _result
15259    }
15260
15261    fn send_raw(
15262        &self,
15263        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15264    ) -> Result<(), fidl::Error> {
15265        self.control_handle.inner.send::<fidl::encoding::ResultType<
15266            fidl::encoding::EmptyStruct,
15267            fidl_fuchsia_posix::Errno,
15268        >>(
15269            result,
15270            self.tx_id,
15271            0x55701c409ff41b40,
15272            fidl::encoding::DynamicFlags::empty(),
15273        )
15274    }
15275}
15276
15277#[must_use = "FIDL methods require a response to be sent"]
15278#[derive(Debug)]
15279pub struct SocketGetIpv6MulticastLoopbackResponder {
15280    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15281    tx_id: u32,
15282}
15283
15284/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15285/// if the responder is dropped without sending a response, so that the client
15286/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15287impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
15288    fn drop(&mut self) {
15289        self.control_handle.shutdown();
15290        // Safety: drops once, never accessed again
15291        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15292    }
15293}
15294
15295impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
15296    type ControlHandle = SocketControlHandle;
15297
15298    fn control_handle(&self) -> &SocketControlHandle {
15299        &self.control_handle
15300    }
15301
15302    fn drop_without_shutdown(mut self) {
15303        // Safety: drops once, never accessed again due to mem::forget
15304        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15305        // Prevent Drop from running (which would shut down the channel)
15306        std::mem::forget(self);
15307    }
15308}
15309
15310impl SocketGetIpv6MulticastLoopbackResponder {
15311    /// Sends a response to the FIDL transaction.
15312    ///
15313    /// Sets the channel to shutdown if an error occurs.
15314    pub fn send(
15315        self,
15316        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15317    ) -> Result<(), fidl::Error> {
15318        let _result = self.send_raw(result);
15319        if _result.is_err() {
15320            self.control_handle.shutdown();
15321        }
15322        self.drop_without_shutdown();
15323        _result
15324    }
15325
15326    /// Similar to "send" but does not shutdown the channel if an error occurs.
15327    pub fn send_no_shutdown_on_err(
15328        self,
15329        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15330    ) -> Result<(), fidl::Error> {
15331        let _result = self.send_raw(result);
15332        self.drop_without_shutdown();
15333        _result
15334    }
15335
15336    fn send_raw(
15337        &self,
15338        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15339    ) -> Result<(), fidl::Error> {
15340        self.control_handle.inner.send::<fidl::encoding::ResultType<
15341            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15342            fidl_fuchsia_posix::Errno,
15343        >>(
15344            result.map(|value| (value,)),
15345            self.tx_id,
15346            0x4415b701fde319c3,
15347            fidl::encoding::DynamicFlags::empty(),
15348        )
15349    }
15350}
15351
15352#[must_use = "FIDL methods require a response to be sent"]
15353#[derive(Debug)]
15354pub struct SocketSetIpv6OnlyResponder {
15355    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15356    tx_id: u32,
15357}
15358
15359/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15360/// if the responder is dropped without sending a response, so that the client
15361/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15362impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15363    fn drop(&mut self) {
15364        self.control_handle.shutdown();
15365        // Safety: drops once, never accessed again
15366        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15367    }
15368}
15369
15370impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15371    type ControlHandle = SocketControlHandle;
15372
15373    fn control_handle(&self) -> &SocketControlHandle {
15374        &self.control_handle
15375    }
15376
15377    fn drop_without_shutdown(mut self) {
15378        // Safety: drops once, never accessed again due to mem::forget
15379        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15380        // Prevent Drop from running (which would shut down the channel)
15381        std::mem::forget(self);
15382    }
15383}
15384
15385impl SocketSetIpv6OnlyResponder {
15386    /// Sends a response to the FIDL transaction.
15387    ///
15388    /// Sets the channel to shutdown if an error occurs.
15389    pub fn send(
15390        self,
15391        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15392    ) -> Result<(), fidl::Error> {
15393        let _result = self.send_raw(result);
15394        if _result.is_err() {
15395            self.control_handle.shutdown();
15396        }
15397        self.drop_without_shutdown();
15398        _result
15399    }
15400
15401    /// Similar to "send" but does not shutdown the channel if an error occurs.
15402    pub fn send_no_shutdown_on_err(
15403        self,
15404        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15405    ) -> Result<(), fidl::Error> {
15406        let _result = self.send_raw(result);
15407        self.drop_without_shutdown();
15408        _result
15409    }
15410
15411    fn send_raw(
15412        &self,
15413        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15414    ) -> Result<(), fidl::Error> {
15415        self.control_handle.inner.send::<fidl::encoding::ResultType<
15416            fidl::encoding::EmptyStruct,
15417            fidl_fuchsia_posix::Errno,
15418        >>(
15419            result,
15420            self.tx_id,
15421            0x4873f1364758cbba,
15422            fidl::encoding::DynamicFlags::empty(),
15423        )
15424    }
15425}
15426
15427#[must_use = "FIDL methods require a response to be sent"]
15428#[derive(Debug)]
15429pub struct SocketGetIpv6OnlyResponder {
15430    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15431    tx_id: u32,
15432}
15433
15434/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15435/// if the responder is dropped without sending a response, so that the client
15436/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15437impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15438    fn drop(&mut self) {
15439        self.control_handle.shutdown();
15440        // Safety: drops once, never accessed again
15441        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15442    }
15443}
15444
15445impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15446    type ControlHandle = SocketControlHandle;
15447
15448    fn control_handle(&self) -> &SocketControlHandle {
15449        &self.control_handle
15450    }
15451
15452    fn drop_without_shutdown(mut self) {
15453        // Safety: drops once, never accessed again due to mem::forget
15454        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15455        // Prevent Drop from running (which would shut down the channel)
15456        std::mem::forget(self);
15457    }
15458}
15459
15460impl SocketGetIpv6OnlyResponder {
15461    /// Sends a response to the FIDL transaction.
15462    ///
15463    /// Sets the channel to shutdown if an error occurs.
15464    pub fn send(
15465        self,
15466        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15467    ) -> Result<(), fidl::Error> {
15468        let _result = self.send_raw(result);
15469        if _result.is_err() {
15470            self.control_handle.shutdown();
15471        }
15472        self.drop_without_shutdown();
15473        _result
15474    }
15475
15476    /// Similar to "send" but does not shutdown the channel if an error occurs.
15477    pub fn send_no_shutdown_on_err(
15478        self,
15479        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15480    ) -> Result<(), fidl::Error> {
15481        let _result = self.send_raw(result);
15482        self.drop_without_shutdown();
15483        _result
15484    }
15485
15486    fn send_raw(
15487        &self,
15488        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15489    ) -> Result<(), fidl::Error> {
15490        self.control_handle.inner.send::<fidl::encoding::ResultType<
15491            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15492            fidl_fuchsia_posix::Errno,
15493        >>(
15494            result.map(|value| (value,)),
15495            self.tx_id,
15496            0x4aa3340a1a26b89c,
15497            fidl::encoding::DynamicFlags::empty(),
15498        )
15499    }
15500}
15501
15502#[must_use = "FIDL methods require a response to be sent"]
15503#[derive(Debug)]
15504pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15505    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15506    tx_id: u32,
15507}
15508
15509/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15510/// if the responder is dropped without sending a response, so that the client
15511/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15512impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15513    fn drop(&mut self) {
15514        self.control_handle.shutdown();
15515        // Safety: drops once, never accessed again
15516        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15517    }
15518}
15519
15520impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15521    type ControlHandle = SocketControlHandle;
15522
15523    fn control_handle(&self) -> &SocketControlHandle {
15524        &self.control_handle
15525    }
15526
15527    fn drop_without_shutdown(mut self) {
15528        // Safety: drops once, never accessed again due to mem::forget
15529        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15530        // Prevent Drop from running (which would shut down the channel)
15531        std::mem::forget(self);
15532    }
15533}
15534
15535impl SocketSetIpv6ReceiveTrafficClassResponder {
15536    /// Sends a response to the FIDL transaction.
15537    ///
15538    /// Sets the channel to shutdown if an error occurs.
15539    pub fn send(
15540        self,
15541        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15542    ) -> Result<(), fidl::Error> {
15543        let _result = self.send_raw(result);
15544        if _result.is_err() {
15545            self.control_handle.shutdown();
15546        }
15547        self.drop_without_shutdown();
15548        _result
15549    }
15550
15551    /// Similar to "send" but does not shutdown the channel if an error occurs.
15552    pub fn send_no_shutdown_on_err(
15553        self,
15554        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15555    ) -> Result<(), fidl::Error> {
15556        let _result = self.send_raw(result);
15557        self.drop_without_shutdown();
15558        _result
15559    }
15560
15561    fn send_raw(
15562        &self,
15563        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15564    ) -> Result<(), fidl::Error> {
15565        self.control_handle.inner.send::<fidl::encoding::ResultType<
15566            fidl::encoding::EmptyStruct,
15567            fidl_fuchsia_posix::Errno,
15568        >>(
15569            result,
15570            self.tx_id,
15571            0x58f07c8788d099a0,
15572            fidl::encoding::DynamicFlags::empty(),
15573        )
15574    }
15575}
15576
15577#[must_use = "FIDL methods require a response to be sent"]
15578#[derive(Debug)]
15579pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15580    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15581    tx_id: u32,
15582}
15583
15584/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15585/// if the responder is dropped without sending a response, so that the client
15586/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15587impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15588    fn drop(&mut self) {
15589        self.control_handle.shutdown();
15590        // Safety: drops once, never accessed again
15591        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15592    }
15593}
15594
15595impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15596    type ControlHandle = SocketControlHandle;
15597
15598    fn control_handle(&self) -> &SocketControlHandle {
15599        &self.control_handle
15600    }
15601
15602    fn drop_without_shutdown(mut self) {
15603        // Safety: drops once, never accessed again due to mem::forget
15604        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15605        // Prevent Drop from running (which would shut down the channel)
15606        std::mem::forget(self);
15607    }
15608}
15609
15610impl SocketGetIpv6ReceiveTrafficClassResponder {
15611    /// Sends a response to the FIDL transaction.
15612    ///
15613    /// Sets the channel to shutdown if an error occurs.
15614    pub fn send(
15615        self,
15616        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15617    ) -> Result<(), fidl::Error> {
15618        let _result = self.send_raw(result);
15619        if _result.is_err() {
15620            self.control_handle.shutdown();
15621        }
15622        self.drop_without_shutdown();
15623        _result
15624    }
15625
15626    /// Similar to "send" but does not shutdown the channel if an error occurs.
15627    pub fn send_no_shutdown_on_err(
15628        self,
15629        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15630    ) -> Result<(), fidl::Error> {
15631        let _result = self.send_raw(result);
15632        self.drop_without_shutdown();
15633        _result
15634    }
15635
15636    fn send_raw(
15637        &self,
15638        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15639    ) -> Result<(), fidl::Error> {
15640        self.control_handle.inner.send::<fidl::encoding::ResultType<
15641            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15642            fidl_fuchsia_posix::Errno,
15643        >>(
15644            result.map(|value| (value,)),
15645            self.tx_id,
15646            0x2e334df1da553ffa,
15647            fidl::encoding::DynamicFlags::empty(),
15648        )
15649    }
15650}
15651
15652#[must_use = "FIDL methods require a response to be sent"]
15653#[derive(Debug)]
15654pub struct SocketSetIpv6TrafficClassResponder {
15655    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15656    tx_id: u32,
15657}
15658
15659/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15660/// if the responder is dropped without sending a response, so that the client
15661/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15662impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15663    fn drop(&mut self) {
15664        self.control_handle.shutdown();
15665        // Safety: drops once, never accessed again
15666        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15667    }
15668}
15669
15670impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15671    type ControlHandle = SocketControlHandle;
15672
15673    fn control_handle(&self) -> &SocketControlHandle {
15674        &self.control_handle
15675    }
15676
15677    fn drop_without_shutdown(mut self) {
15678        // Safety: drops once, never accessed again due to mem::forget
15679        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15680        // Prevent Drop from running (which would shut down the channel)
15681        std::mem::forget(self);
15682    }
15683}
15684
15685impl SocketSetIpv6TrafficClassResponder {
15686    /// Sends a response to the FIDL transaction.
15687    ///
15688    /// Sets the channel to shutdown if an error occurs.
15689    pub fn send(
15690        self,
15691        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15692    ) -> Result<(), fidl::Error> {
15693        let _result = self.send_raw(result);
15694        if _result.is_err() {
15695            self.control_handle.shutdown();
15696        }
15697        self.drop_without_shutdown();
15698        _result
15699    }
15700
15701    /// Similar to "send" but does not shutdown the channel if an error occurs.
15702    pub fn send_no_shutdown_on_err(
15703        self,
15704        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15705    ) -> Result<(), fidl::Error> {
15706        let _result = self.send_raw(result);
15707        self.drop_without_shutdown();
15708        _result
15709    }
15710
15711    fn send_raw(
15712        &self,
15713        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15714    ) -> Result<(), fidl::Error> {
15715        self.control_handle.inner.send::<fidl::encoding::ResultType<
15716            fidl::encoding::EmptyStruct,
15717            fidl_fuchsia_posix::Errno,
15718        >>(
15719            result,
15720            self.tx_id,
15721            0x6af077800c5a0b4f,
15722            fidl::encoding::DynamicFlags::empty(),
15723        )
15724    }
15725}
15726
15727#[must_use = "FIDL methods require a response to be sent"]
15728#[derive(Debug)]
15729pub struct SocketGetIpv6TrafficClassResponder {
15730    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15731    tx_id: u32,
15732}
15733
15734/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15735/// if the responder is dropped without sending a response, so that the client
15736/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15737impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15738    fn drop(&mut self) {
15739        self.control_handle.shutdown();
15740        // Safety: drops once, never accessed again
15741        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15742    }
15743}
15744
15745impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15746    type ControlHandle = SocketControlHandle;
15747
15748    fn control_handle(&self) -> &SocketControlHandle {
15749        &self.control_handle
15750    }
15751
15752    fn drop_without_shutdown(mut self) {
15753        // Safety: drops once, never accessed again due to mem::forget
15754        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15755        // Prevent Drop from running (which would shut down the channel)
15756        std::mem::forget(self);
15757    }
15758}
15759
15760impl SocketGetIpv6TrafficClassResponder {
15761    /// Sends a response to the FIDL transaction.
15762    ///
15763    /// Sets the channel to shutdown if an error occurs.
15764    pub fn send(
15765        self,
15766        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15767    ) -> Result<(), fidl::Error> {
15768        let _result = self.send_raw(result);
15769        if _result.is_err() {
15770            self.control_handle.shutdown();
15771        }
15772        self.drop_without_shutdown();
15773        _result
15774    }
15775
15776    /// Similar to "send" but does not shutdown the channel if an error occurs.
15777    pub fn send_no_shutdown_on_err(
15778        self,
15779        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15780    ) -> Result<(), fidl::Error> {
15781        let _result = self.send_raw(result);
15782        self.drop_without_shutdown();
15783        _result
15784    }
15785
15786    fn send_raw(
15787        &self,
15788        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15789    ) -> Result<(), fidl::Error> {
15790        self.control_handle.inner.send::<fidl::encoding::ResultType<
15791            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15792            fidl_fuchsia_posix::Errno,
15793        >>(
15794            result.map(|value| (value,)),
15795            self.tx_id,
15796            0x6baf6eed8fc2f04,
15797            fidl::encoding::DynamicFlags::empty(),
15798        )
15799    }
15800}
15801
15802#[must_use = "FIDL methods require a response to be sent"]
15803#[derive(Debug)]
15804pub struct SocketSetIpv6ReceivePacketInfoResponder {
15805    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15806    tx_id: u32,
15807}
15808
15809/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15810/// if the responder is dropped without sending a response, so that the client
15811/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15812impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15813    fn drop(&mut self) {
15814        self.control_handle.shutdown();
15815        // Safety: drops once, never accessed again
15816        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15817    }
15818}
15819
15820impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15821    type ControlHandle = SocketControlHandle;
15822
15823    fn control_handle(&self) -> &SocketControlHandle {
15824        &self.control_handle
15825    }
15826
15827    fn drop_without_shutdown(mut self) {
15828        // Safety: drops once, never accessed again due to mem::forget
15829        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15830        // Prevent Drop from running (which would shut down the channel)
15831        std::mem::forget(self);
15832    }
15833}
15834
15835impl SocketSetIpv6ReceivePacketInfoResponder {
15836    /// Sends a response to the FIDL transaction.
15837    ///
15838    /// Sets the channel to shutdown if an error occurs.
15839    pub fn send(
15840        self,
15841        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15842    ) -> Result<(), fidl::Error> {
15843        let _result = self.send_raw(result);
15844        if _result.is_err() {
15845            self.control_handle.shutdown();
15846        }
15847        self.drop_without_shutdown();
15848        _result
15849    }
15850
15851    /// Similar to "send" but does not shutdown the channel if an error occurs.
15852    pub fn send_no_shutdown_on_err(
15853        self,
15854        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15855    ) -> Result<(), fidl::Error> {
15856        let _result = self.send_raw(result);
15857        self.drop_without_shutdown();
15858        _result
15859    }
15860
15861    fn send_raw(
15862        &self,
15863        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15864    ) -> Result<(), fidl::Error> {
15865        self.control_handle.inner.send::<fidl::encoding::ResultType<
15866            fidl::encoding::EmptyStruct,
15867            fidl_fuchsia_posix::Errno,
15868        >>(
15869            result,
15870            self.tx_id,
15871            0x19259775b1a92768,
15872            fidl::encoding::DynamicFlags::empty(),
15873        )
15874    }
15875}
15876
15877#[must_use = "FIDL methods require a response to be sent"]
15878#[derive(Debug)]
15879pub struct SocketGetIpv6ReceivePacketInfoResponder {
15880    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15881    tx_id: u32,
15882}
15883
15884/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15885/// if the responder is dropped without sending a response, so that the client
15886/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15887impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15888    fn drop(&mut self) {
15889        self.control_handle.shutdown();
15890        // Safety: drops once, never accessed again
15891        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15892    }
15893}
15894
15895impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15896    type ControlHandle = SocketControlHandle;
15897
15898    fn control_handle(&self) -> &SocketControlHandle {
15899        &self.control_handle
15900    }
15901
15902    fn drop_without_shutdown(mut self) {
15903        // Safety: drops once, never accessed again due to mem::forget
15904        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15905        // Prevent Drop from running (which would shut down the channel)
15906        std::mem::forget(self);
15907    }
15908}
15909
15910impl SocketGetIpv6ReceivePacketInfoResponder {
15911    /// Sends a response to the FIDL transaction.
15912    ///
15913    /// Sets the channel to shutdown if an error occurs.
15914    pub fn send(
15915        self,
15916        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15917    ) -> Result<(), fidl::Error> {
15918        let _result = self.send_raw(result);
15919        if _result.is_err() {
15920            self.control_handle.shutdown();
15921        }
15922        self.drop_without_shutdown();
15923        _result
15924    }
15925
15926    /// Similar to "send" but does not shutdown the channel if an error occurs.
15927    pub fn send_no_shutdown_on_err(
15928        self,
15929        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15930    ) -> Result<(), fidl::Error> {
15931        let _result = self.send_raw(result);
15932        self.drop_without_shutdown();
15933        _result
15934    }
15935
15936    fn send_raw(
15937        &self,
15938        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15939    ) -> Result<(), fidl::Error> {
15940        self.control_handle.inner.send::<fidl::encoding::ResultType<
15941            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15942            fidl_fuchsia_posix::Errno,
15943        >>(
15944            result.map(|value| (value,)),
15945            self.tx_id,
15946            0x7acd4a2775baec75,
15947            fidl::encoding::DynamicFlags::empty(),
15948        )
15949    }
15950}
15951
15952#[must_use = "FIDL methods require a response to be sent"]
15953#[derive(Debug)]
15954pub struct SocketGetOriginalDestinationResponder {
15955    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15956    tx_id: u32,
15957}
15958
15959/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15960/// if the responder is dropped without sending a response, so that the client
15961/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15962impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15963    fn drop(&mut self) {
15964        self.control_handle.shutdown();
15965        // Safety: drops once, never accessed again
15966        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15967    }
15968}
15969
15970impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15971    type ControlHandle = SocketControlHandle;
15972
15973    fn control_handle(&self) -> &SocketControlHandle {
15974        &self.control_handle
15975    }
15976
15977    fn drop_without_shutdown(mut self) {
15978        // Safety: drops once, never accessed again due to mem::forget
15979        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15980        // Prevent Drop from running (which would shut down the channel)
15981        std::mem::forget(self);
15982    }
15983}
15984
15985impl SocketGetOriginalDestinationResponder {
15986    /// Sends a response to the FIDL transaction.
15987    ///
15988    /// Sets the channel to shutdown if an error occurs.
15989    pub fn send(
15990        self,
15991        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15992    ) -> Result<(), fidl::Error> {
15993        let _result = self.send_raw(result);
15994        if _result.is_err() {
15995            self.control_handle.shutdown();
15996        }
15997        self.drop_without_shutdown();
15998        _result
15999    }
16000
16001    /// Similar to "send" but does not shutdown the channel if an error occurs.
16002    pub fn send_no_shutdown_on_err(
16003        self,
16004        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
16005    ) -> Result<(), fidl::Error> {
16006        let _result = self.send_raw(result);
16007        self.drop_without_shutdown();
16008        _result
16009    }
16010
16011    fn send_raw(
16012        &self,
16013        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
16014    ) -> Result<(), fidl::Error> {
16015        self.control_handle.inner.send::<fidl::encoding::ResultType<
16016            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
16017            fidl_fuchsia_posix::Errno,
16018        >>(
16019            result.map(|value| (value,)),
16020            self.tx_id,
16021            0x38bf28f0dafdbac0,
16022            fidl::encoding::DynamicFlags::empty(),
16023        )
16024    }
16025}
16026
16027#[must_use = "FIDL methods require a response to be sent"]
16028#[derive(Debug)]
16029pub struct SocketDescribeResponder {
16030    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16031    tx_id: u32,
16032}
16033
16034/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16035/// if the responder is dropped without sending a response, so that the client
16036/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16037impl std::ops::Drop for SocketDescribeResponder {
16038    fn drop(&mut self) {
16039        self.control_handle.shutdown();
16040        // Safety: drops once, never accessed again
16041        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16042    }
16043}
16044
16045impl fidl::endpoints::Responder for SocketDescribeResponder {
16046    type ControlHandle = SocketControlHandle;
16047
16048    fn control_handle(&self) -> &SocketControlHandle {
16049        &self.control_handle
16050    }
16051
16052    fn drop_without_shutdown(mut self) {
16053        // Safety: drops once, never accessed again due to mem::forget
16054        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16055        // Prevent Drop from running (which would shut down the channel)
16056        std::mem::forget(self);
16057    }
16058}
16059
16060impl SocketDescribeResponder {
16061    /// Sends a response to the FIDL transaction.
16062    ///
16063    /// Sets the channel to shutdown if an error occurs.
16064    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
16065        let _result = self.send_raw(payload);
16066        if _result.is_err() {
16067            self.control_handle.shutdown();
16068        }
16069        self.drop_without_shutdown();
16070        _result
16071    }
16072
16073    /// Similar to "send" but does not shutdown the channel if an error occurs.
16074    pub fn send_no_shutdown_on_err(
16075        self,
16076        mut payload: SocketDescribeResponse,
16077    ) -> Result<(), fidl::Error> {
16078        let _result = self.send_raw(payload);
16079        self.drop_without_shutdown();
16080        _result
16081    }
16082
16083    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
16084        self.control_handle.inner.send::<SocketDescribeResponse>(
16085            &mut payload,
16086            self.tx_id,
16087            0x335706eccf54a135,
16088            fidl::encoding::DynamicFlags::empty(),
16089        )
16090    }
16091}
16092
16093#[must_use = "FIDL methods require a response to be sent"]
16094#[derive(Debug)]
16095pub struct SocketRecvMsgResponder {
16096    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16097    tx_id: u32,
16098}
16099
16100/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16101/// if the responder is dropped without sending a response, so that the client
16102/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16103impl std::ops::Drop for SocketRecvMsgResponder {
16104    fn drop(&mut self) {
16105        self.control_handle.shutdown();
16106        // Safety: drops once, never accessed again
16107        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16108    }
16109}
16110
16111impl fidl::endpoints::Responder for SocketRecvMsgResponder {
16112    type ControlHandle = SocketControlHandle;
16113
16114    fn control_handle(&self) -> &SocketControlHandle {
16115        &self.control_handle
16116    }
16117
16118    fn drop_without_shutdown(mut self) {
16119        // Safety: drops once, never accessed again due to mem::forget
16120        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16121        // Prevent Drop from running (which would shut down the channel)
16122        std::mem::forget(self);
16123    }
16124}
16125
16126impl SocketRecvMsgResponder {
16127    /// Sends a response to the FIDL transaction.
16128    ///
16129    /// Sets the channel to shutdown if an error occurs.
16130    pub fn send(
16131        self,
16132        mut result: Result<
16133            (
16134                Option<&fidl_fuchsia_net::SocketAddress>,
16135                &[u8],
16136                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16137                u32,
16138            ),
16139            fidl_fuchsia_posix::Errno,
16140        >,
16141    ) -> Result<(), fidl::Error> {
16142        let _result = self.send_raw(result);
16143        if _result.is_err() {
16144            self.control_handle.shutdown();
16145        }
16146        self.drop_without_shutdown();
16147        _result
16148    }
16149
16150    /// Similar to "send" but does not shutdown the channel if an error occurs.
16151    pub fn send_no_shutdown_on_err(
16152        self,
16153        mut result: Result<
16154            (
16155                Option<&fidl_fuchsia_net::SocketAddress>,
16156                &[u8],
16157                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16158                u32,
16159            ),
16160            fidl_fuchsia_posix::Errno,
16161        >,
16162    ) -> Result<(), fidl::Error> {
16163        let _result = self.send_raw(result);
16164        self.drop_without_shutdown();
16165        _result
16166    }
16167
16168    fn send_raw(
16169        &self,
16170        mut result: Result<
16171            (
16172                Option<&fidl_fuchsia_net::SocketAddress>,
16173                &[u8],
16174                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16175                u32,
16176            ),
16177            fidl_fuchsia_posix::Errno,
16178        >,
16179    ) -> Result<(), fidl::Error> {
16180        self.control_handle.inner.send::<fidl::encoding::ResultType<
16181            SocketRecvMsgResponse,
16182            fidl_fuchsia_posix::Errno,
16183        >>(
16184            result,
16185            self.tx_id,
16186            0x1dfb695351d3aa1d,
16187            fidl::encoding::DynamicFlags::empty(),
16188        )
16189    }
16190}
16191
16192#[must_use = "FIDL methods require a response to be sent"]
16193#[derive(Debug)]
16194pub struct SocketSendMsgResponder {
16195    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16196    tx_id: u32,
16197}
16198
16199/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16200/// if the responder is dropped without sending a response, so that the client
16201/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16202impl std::ops::Drop for SocketSendMsgResponder {
16203    fn drop(&mut self) {
16204        self.control_handle.shutdown();
16205        // Safety: drops once, never accessed again
16206        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16207    }
16208}
16209
16210impl fidl::endpoints::Responder for SocketSendMsgResponder {
16211    type ControlHandle = SocketControlHandle;
16212
16213    fn control_handle(&self) -> &SocketControlHandle {
16214        &self.control_handle
16215    }
16216
16217    fn drop_without_shutdown(mut self) {
16218        // Safety: drops once, never accessed again due to mem::forget
16219        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16220        // Prevent Drop from running (which would shut down the channel)
16221        std::mem::forget(self);
16222    }
16223}
16224
16225impl SocketSendMsgResponder {
16226    /// Sends a response to the FIDL transaction.
16227    ///
16228    /// Sets the channel to shutdown if an error occurs.
16229    pub fn send(
16230        self,
16231        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16232    ) -> Result<(), fidl::Error> {
16233        let _result = self.send_raw(result);
16234        if _result.is_err() {
16235            self.control_handle.shutdown();
16236        }
16237        self.drop_without_shutdown();
16238        _result
16239    }
16240
16241    /// Similar to "send" but does not shutdown the channel if an error occurs.
16242    pub fn send_no_shutdown_on_err(
16243        self,
16244        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16245    ) -> Result<(), fidl::Error> {
16246        let _result = self.send_raw(result);
16247        self.drop_without_shutdown();
16248        _result
16249    }
16250
16251    fn send_raw(
16252        &self,
16253        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16254    ) -> Result<(), fidl::Error> {
16255        self.control_handle.inner.send::<fidl::encoding::ResultType<
16256            fidl::encoding::EmptyStruct,
16257            fidl_fuchsia_posix::Errno,
16258        >>(
16259            result,
16260            self.tx_id,
16261            0x2cf1eac9a7fc8958,
16262            fidl::encoding::DynamicFlags::empty(),
16263        )
16264    }
16265}
16266
16267#[must_use = "FIDL methods require a response to be sent"]
16268#[derive(Debug)]
16269pub struct SocketGetInfoResponder {
16270    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16271    tx_id: u32,
16272}
16273
16274/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16275/// if the responder is dropped without sending a response, so that the client
16276/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16277impl std::ops::Drop for SocketGetInfoResponder {
16278    fn drop(&mut self) {
16279        self.control_handle.shutdown();
16280        // Safety: drops once, never accessed again
16281        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16282    }
16283}
16284
16285impl fidl::endpoints::Responder for SocketGetInfoResponder {
16286    type ControlHandle = SocketControlHandle;
16287
16288    fn control_handle(&self) -> &SocketControlHandle {
16289        &self.control_handle
16290    }
16291
16292    fn drop_without_shutdown(mut self) {
16293        // Safety: drops once, never accessed again due to mem::forget
16294        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16295        // Prevent Drop from running (which would shut down the channel)
16296        std::mem::forget(self);
16297    }
16298}
16299
16300impl SocketGetInfoResponder {
16301    /// Sends a response to the FIDL transaction.
16302    ///
16303    /// Sets the channel to shutdown if an error occurs.
16304    pub fn send(
16305        self,
16306        mut result: Result<
16307            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16308            fidl_fuchsia_posix::Errno,
16309        >,
16310    ) -> Result<(), fidl::Error> {
16311        let _result = self.send_raw(result);
16312        if _result.is_err() {
16313            self.control_handle.shutdown();
16314        }
16315        self.drop_without_shutdown();
16316        _result
16317    }
16318
16319    /// Similar to "send" but does not shutdown the channel if an error occurs.
16320    pub fn send_no_shutdown_on_err(
16321        self,
16322        mut result: Result<
16323            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16324            fidl_fuchsia_posix::Errno,
16325        >,
16326    ) -> Result<(), fidl::Error> {
16327        let _result = self.send_raw(result);
16328        self.drop_without_shutdown();
16329        _result
16330    }
16331
16332    fn send_raw(
16333        &self,
16334        mut result: Result<
16335            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16336            fidl_fuchsia_posix::Errno,
16337        >,
16338    ) -> Result<(), fidl::Error> {
16339        self.control_handle.inner.send::<fidl::encoding::ResultType<
16340            SocketGetInfoResponse,
16341            fidl_fuchsia_posix::Errno,
16342        >>(
16343            result,
16344            self.tx_id,
16345            0x39676f75aec339ba,
16346            fidl::encoding::DynamicFlags::empty(),
16347        )
16348    }
16349}
16350
16351#[must_use = "FIDL methods require a response to be sent"]
16352#[derive(Debug)]
16353pub struct SocketSetIpHeaderIncludedResponder {
16354    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16355    tx_id: u32,
16356}
16357
16358/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16359/// if the responder is dropped without sending a response, so that the client
16360/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16361impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16362    fn drop(&mut self) {
16363        self.control_handle.shutdown();
16364        // Safety: drops once, never accessed again
16365        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16366    }
16367}
16368
16369impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16370    type ControlHandle = SocketControlHandle;
16371
16372    fn control_handle(&self) -> &SocketControlHandle {
16373        &self.control_handle
16374    }
16375
16376    fn drop_without_shutdown(mut self) {
16377        // Safety: drops once, never accessed again due to mem::forget
16378        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16379        // Prevent Drop from running (which would shut down the channel)
16380        std::mem::forget(self);
16381    }
16382}
16383
16384impl SocketSetIpHeaderIncludedResponder {
16385    /// Sends a response to the FIDL transaction.
16386    ///
16387    /// Sets the channel to shutdown if an error occurs.
16388    pub fn send(
16389        self,
16390        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16391    ) -> Result<(), fidl::Error> {
16392        let _result = self.send_raw(result);
16393        if _result.is_err() {
16394            self.control_handle.shutdown();
16395        }
16396        self.drop_without_shutdown();
16397        _result
16398    }
16399
16400    /// Similar to "send" but does not shutdown the channel if an error occurs.
16401    pub fn send_no_shutdown_on_err(
16402        self,
16403        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16404    ) -> Result<(), fidl::Error> {
16405        let _result = self.send_raw(result);
16406        self.drop_without_shutdown();
16407        _result
16408    }
16409
16410    fn send_raw(
16411        &self,
16412        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16413    ) -> Result<(), fidl::Error> {
16414        self.control_handle.inner.send::<fidl::encoding::ResultType<
16415            fidl::encoding::EmptyStruct,
16416            fidl_fuchsia_posix::Errno,
16417        >>(
16418            result,
16419            self.tx_id,
16420            0x5d06a606d95e8f3,
16421            fidl::encoding::DynamicFlags::empty(),
16422        )
16423    }
16424}
16425
16426#[must_use = "FIDL methods require a response to be sent"]
16427#[derive(Debug)]
16428pub struct SocketGetIpHeaderIncludedResponder {
16429    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16430    tx_id: u32,
16431}
16432
16433/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16434/// if the responder is dropped without sending a response, so that the client
16435/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16436impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16437    fn drop(&mut self) {
16438        self.control_handle.shutdown();
16439        // Safety: drops once, never accessed again
16440        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16441    }
16442}
16443
16444impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16445    type ControlHandle = SocketControlHandle;
16446
16447    fn control_handle(&self) -> &SocketControlHandle {
16448        &self.control_handle
16449    }
16450
16451    fn drop_without_shutdown(mut self) {
16452        // Safety: drops once, never accessed again due to mem::forget
16453        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16454        // Prevent Drop from running (which would shut down the channel)
16455        std::mem::forget(self);
16456    }
16457}
16458
16459impl SocketGetIpHeaderIncludedResponder {
16460    /// Sends a response to the FIDL transaction.
16461    ///
16462    /// Sets the channel to shutdown if an error occurs.
16463    pub fn send(
16464        self,
16465        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16466    ) -> Result<(), fidl::Error> {
16467        let _result = self.send_raw(result);
16468        if _result.is_err() {
16469            self.control_handle.shutdown();
16470        }
16471        self.drop_without_shutdown();
16472        _result
16473    }
16474
16475    /// Similar to "send" but does not shutdown the channel if an error occurs.
16476    pub fn send_no_shutdown_on_err(
16477        self,
16478        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16479    ) -> Result<(), fidl::Error> {
16480        let _result = self.send_raw(result);
16481        self.drop_without_shutdown();
16482        _result
16483    }
16484
16485    fn send_raw(
16486        &self,
16487        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16488    ) -> Result<(), fidl::Error> {
16489        self.control_handle.inner.send::<fidl::encoding::ResultType<
16490            SocketGetIpHeaderIncludedResponse,
16491            fidl_fuchsia_posix::Errno,
16492        >>(
16493            result.map(|value| (value,)),
16494            self.tx_id,
16495            0x76125ad1f4d175f6,
16496            fidl::encoding::DynamicFlags::empty(),
16497        )
16498    }
16499}
16500
16501#[must_use = "FIDL methods require a response to be sent"]
16502#[derive(Debug)]
16503pub struct SocketSetIcmpv6FilterResponder {
16504    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16505    tx_id: u32,
16506}
16507
16508/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16509/// if the responder is dropped without sending a response, so that the client
16510/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16511impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16512    fn drop(&mut self) {
16513        self.control_handle.shutdown();
16514        // Safety: drops once, never accessed again
16515        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16516    }
16517}
16518
16519impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16520    type ControlHandle = SocketControlHandle;
16521
16522    fn control_handle(&self) -> &SocketControlHandle {
16523        &self.control_handle
16524    }
16525
16526    fn drop_without_shutdown(mut self) {
16527        // Safety: drops once, never accessed again due to mem::forget
16528        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16529        // Prevent Drop from running (which would shut down the channel)
16530        std::mem::forget(self);
16531    }
16532}
16533
16534impl SocketSetIcmpv6FilterResponder {
16535    /// Sends a response to the FIDL transaction.
16536    ///
16537    /// Sets the channel to shutdown if an error occurs.
16538    pub fn send(
16539        self,
16540        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16541    ) -> Result<(), fidl::Error> {
16542        let _result = self.send_raw(result);
16543        if _result.is_err() {
16544            self.control_handle.shutdown();
16545        }
16546        self.drop_without_shutdown();
16547        _result
16548    }
16549
16550    /// Similar to "send" but does not shutdown the channel if an error occurs.
16551    pub fn send_no_shutdown_on_err(
16552        self,
16553        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16554    ) -> Result<(), fidl::Error> {
16555        let _result = self.send_raw(result);
16556        self.drop_without_shutdown();
16557        _result
16558    }
16559
16560    fn send_raw(
16561        &self,
16562        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16563    ) -> Result<(), fidl::Error> {
16564        self.control_handle.inner.send::<fidl::encoding::ResultType<
16565            fidl::encoding::EmptyStruct,
16566            fidl_fuchsia_posix::Errno,
16567        >>(
16568            result,
16569            self.tx_id,
16570            0x4ebea92a43ae68a9,
16571            fidl::encoding::DynamicFlags::empty(),
16572        )
16573    }
16574}
16575
16576#[must_use = "FIDL methods require a response to be sent"]
16577#[derive(Debug)]
16578pub struct SocketGetIcmpv6FilterResponder {
16579    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16580    tx_id: u32,
16581}
16582
16583/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16584/// if the responder is dropped without sending a response, so that the client
16585/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16586impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16587    fn drop(&mut self) {
16588        self.control_handle.shutdown();
16589        // Safety: drops once, never accessed again
16590        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16591    }
16592}
16593
16594impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16595    type ControlHandle = SocketControlHandle;
16596
16597    fn control_handle(&self) -> &SocketControlHandle {
16598        &self.control_handle
16599    }
16600
16601    fn drop_without_shutdown(mut self) {
16602        // Safety: drops once, never accessed again due to mem::forget
16603        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16604        // Prevent Drop from running (which would shut down the channel)
16605        std::mem::forget(self);
16606    }
16607}
16608
16609impl SocketGetIcmpv6FilterResponder {
16610    /// Sends a response to the FIDL transaction.
16611    ///
16612    /// Sets the channel to shutdown if an error occurs.
16613    pub fn send(
16614        self,
16615        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16616    ) -> Result<(), fidl::Error> {
16617        let _result = self.send_raw(result);
16618        if _result.is_err() {
16619            self.control_handle.shutdown();
16620        }
16621        self.drop_without_shutdown();
16622        _result
16623    }
16624
16625    /// Similar to "send" but does not shutdown the channel if an error occurs.
16626    pub fn send_no_shutdown_on_err(
16627        self,
16628        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16629    ) -> Result<(), fidl::Error> {
16630        let _result = self.send_raw(result);
16631        self.drop_without_shutdown();
16632        _result
16633    }
16634
16635    fn send_raw(
16636        &self,
16637        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16638    ) -> Result<(), fidl::Error> {
16639        self.control_handle.inner.send::<fidl::encoding::ResultType<
16640            SocketGetIcmpv6FilterResponse,
16641            fidl_fuchsia_posix::Errno,
16642        >>(
16643            result.map(|filter| (filter,)),
16644            self.tx_id,
16645            0x43bd4f3bc0970ace,
16646            fidl::encoding::DynamicFlags::empty(),
16647        )
16648    }
16649}
16650
16651#[must_use = "FIDL methods require a response to be sent"]
16652#[derive(Debug)]
16653pub struct SocketSetIpv6ChecksumResponder {
16654    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16655    tx_id: u32,
16656}
16657
16658/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16659/// if the responder is dropped without sending a response, so that the client
16660/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16661impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16662    fn drop(&mut self) {
16663        self.control_handle.shutdown();
16664        // Safety: drops once, never accessed again
16665        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16666    }
16667}
16668
16669impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16670    type ControlHandle = SocketControlHandle;
16671
16672    fn control_handle(&self) -> &SocketControlHandle {
16673        &self.control_handle
16674    }
16675
16676    fn drop_without_shutdown(mut self) {
16677        // Safety: drops once, never accessed again due to mem::forget
16678        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16679        // Prevent Drop from running (which would shut down the channel)
16680        std::mem::forget(self);
16681    }
16682}
16683
16684impl SocketSetIpv6ChecksumResponder {
16685    /// Sends a response to the FIDL transaction.
16686    ///
16687    /// Sets the channel to shutdown if an error occurs.
16688    pub fn send(
16689        self,
16690        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16691    ) -> Result<(), fidl::Error> {
16692        let _result = self.send_raw(result);
16693        if _result.is_err() {
16694            self.control_handle.shutdown();
16695        }
16696        self.drop_without_shutdown();
16697        _result
16698    }
16699
16700    /// Similar to "send" but does not shutdown the channel if an error occurs.
16701    pub fn send_no_shutdown_on_err(
16702        self,
16703        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16704    ) -> Result<(), fidl::Error> {
16705        let _result = self.send_raw(result);
16706        self.drop_without_shutdown();
16707        _result
16708    }
16709
16710    fn send_raw(
16711        &self,
16712        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16713    ) -> Result<(), fidl::Error> {
16714        self.control_handle.inner.send::<fidl::encoding::ResultType<
16715            fidl::encoding::EmptyStruct,
16716            fidl_fuchsia_posix::Errno,
16717        >>(
16718            result,
16719            self.tx_id,
16720            0x18b7809577199cb4,
16721            fidl::encoding::DynamicFlags::empty(),
16722        )
16723    }
16724}
16725
16726#[must_use = "FIDL methods require a response to be sent"]
16727#[derive(Debug)]
16728pub struct SocketGetIpv6ChecksumResponder {
16729    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16730    tx_id: u32,
16731}
16732
16733/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16734/// if the responder is dropped without sending a response, so that the client
16735/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16736impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16737    fn drop(&mut self) {
16738        self.control_handle.shutdown();
16739        // Safety: drops once, never accessed again
16740        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16741    }
16742}
16743
16744impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16745    type ControlHandle = SocketControlHandle;
16746
16747    fn control_handle(&self) -> &SocketControlHandle {
16748        &self.control_handle
16749    }
16750
16751    fn drop_without_shutdown(mut self) {
16752        // Safety: drops once, never accessed again due to mem::forget
16753        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16754        // Prevent Drop from running (which would shut down the channel)
16755        std::mem::forget(self);
16756    }
16757}
16758
16759impl SocketGetIpv6ChecksumResponder {
16760    /// Sends a response to the FIDL transaction.
16761    ///
16762    /// Sets the channel to shutdown if an error occurs.
16763    pub fn send(
16764        self,
16765        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16766    ) -> Result<(), fidl::Error> {
16767        let _result = self.send_raw(result);
16768        if _result.is_err() {
16769            self.control_handle.shutdown();
16770        }
16771        self.drop_without_shutdown();
16772        _result
16773    }
16774
16775    /// Similar to "send" but does not shutdown the channel if an error occurs.
16776    pub fn send_no_shutdown_on_err(
16777        self,
16778        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16779    ) -> Result<(), fidl::Error> {
16780        let _result = self.send_raw(result);
16781        self.drop_without_shutdown();
16782        _result
16783    }
16784
16785    fn send_raw(
16786        &self,
16787        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16788    ) -> Result<(), fidl::Error> {
16789        self.control_handle.inner.send::<fidl::encoding::ResultType<
16790            SocketGetIpv6ChecksumResponse,
16791            fidl_fuchsia_posix::Errno,
16792        >>(
16793            result.map(|config| (config,)),
16794            self.tx_id,
16795            0x1847bf5b2d263dd,
16796            fidl::encoding::DynamicFlags::empty(),
16797        )
16798    }
16799}
16800
16801mod internal {
16802    use super::*;
16803
16804    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsRequest {
16805        type Borrowed<'a> = &'a mut Self;
16806        fn take_or_borrow<'a>(
16807            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16808        ) -> Self::Borrowed<'a> {
16809            value
16810        }
16811    }
16812
16813    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16814        type Owned = Self;
16815
16816        #[inline(always)]
16817        fn inline_align(_context: fidl::encoding::Context) -> usize {
16818            8
16819        }
16820
16821        #[inline(always)]
16822        fn inline_size(_context: fidl::encoding::Context) -> usize {
16823            40
16824        }
16825    }
16826
16827    unsafe impl
16828        fidl::encoding::Encode<
16829            ProviderSocketWithOptionsRequest,
16830            fidl::encoding::DefaultFuchsiaResourceDialect,
16831        > for &mut ProviderSocketWithOptionsRequest
16832    {
16833        #[inline]
16834        unsafe fn encode(
16835            self,
16836            encoder: &mut fidl::encoding::Encoder<
16837                '_,
16838                fidl::encoding::DefaultFuchsiaResourceDialect,
16839            >,
16840            offset: usize,
16841            _depth: fidl::encoding::Depth,
16842        ) -> fidl::Result<()> {
16843            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16844            // Delegate to tuple encoding.
16845            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16846                (
16847                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16848                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16849                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.opts),
16850                ),
16851                encoder, offset, _depth
16852            )
16853        }
16854    }
16855    unsafe impl<
16856        T0: fidl::encoding::Encode<
16857                fidl_fuchsia_posix_socket::Domain,
16858                fidl::encoding::DefaultFuchsiaResourceDialect,
16859            >,
16860        T1: fidl::encoding::Encode<ProtocolAssociation, fidl::encoding::DefaultFuchsiaResourceDialect>,
16861        T2: fidl::encoding::Encode<
16862                fidl_fuchsia_posix_socket::SocketCreationOptions,
16863                fidl::encoding::DefaultFuchsiaResourceDialect,
16864            >,
16865    >
16866        fidl::encoding::Encode<
16867            ProviderSocketWithOptionsRequest,
16868            fidl::encoding::DefaultFuchsiaResourceDialect,
16869        > for (T0, T1, T2)
16870    {
16871        #[inline]
16872        unsafe fn encode(
16873            self,
16874            encoder: &mut fidl::encoding::Encoder<
16875                '_,
16876                fidl::encoding::DefaultFuchsiaResourceDialect,
16877            >,
16878            offset: usize,
16879            depth: fidl::encoding::Depth,
16880        ) -> fidl::Result<()> {
16881            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16882            // Zero out padding regions. There's no need to apply masks
16883            // because the unmasked parts will be overwritten by fields.
16884            unsafe {
16885                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16886                (ptr as *mut u64).write_unaligned(0);
16887            }
16888            // Write the fields.
16889            self.0.encode(encoder, offset + 0, depth)?;
16890            self.1.encode(encoder, offset + 8, depth)?;
16891            self.2.encode(encoder, offset + 24, depth)?;
16892            Ok(())
16893        }
16894    }
16895
16896    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16897        for ProviderSocketWithOptionsRequest
16898    {
16899        #[inline(always)]
16900        fn new_empty() -> Self {
16901            Self {
16902                domain: fidl::new_empty!(
16903                    fidl_fuchsia_posix_socket::Domain,
16904                    fidl::encoding::DefaultFuchsiaResourceDialect
16905                ),
16906                proto: fidl::new_empty!(
16907                    ProtocolAssociation,
16908                    fidl::encoding::DefaultFuchsiaResourceDialect
16909                ),
16910                opts: fidl::new_empty!(
16911                    fidl_fuchsia_posix_socket::SocketCreationOptions,
16912                    fidl::encoding::DefaultFuchsiaResourceDialect
16913                ),
16914            }
16915        }
16916
16917        #[inline]
16918        unsafe fn decode(
16919            &mut self,
16920            decoder: &mut fidl::encoding::Decoder<
16921                '_,
16922                fidl::encoding::DefaultFuchsiaResourceDialect,
16923            >,
16924            offset: usize,
16925            _depth: fidl::encoding::Depth,
16926        ) -> fidl::Result<()> {
16927            decoder.debug_check_bounds::<Self>(offset);
16928            // Verify that padding bytes are zero.
16929            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16930            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16931            let mask = 0xffffffffffff0000u64;
16932            let maskedval = padval & mask;
16933            if maskedval != 0 {
16934                return Err(fidl::Error::NonZeroPadding {
16935                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16936                });
16937            }
16938            fidl::decode!(
16939                fidl_fuchsia_posix_socket::Domain,
16940                fidl::encoding::DefaultFuchsiaResourceDialect,
16941                &mut self.domain,
16942                decoder,
16943                offset + 0,
16944                _depth
16945            )?;
16946            fidl::decode!(
16947                ProtocolAssociation,
16948                fidl::encoding::DefaultFuchsiaResourceDialect,
16949                &mut self.proto,
16950                decoder,
16951                offset + 8,
16952                _depth
16953            )?;
16954            fidl::decode!(
16955                fidl_fuchsia_posix_socket::SocketCreationOptions,
16956                fidl::encoding::DefaultFuchsiaResourceDialect,
16957                &mut self.opts,
16958                decoder,
16959                offset + 24,
16960                _depth
16961            )?;
16962            Ok(())
16963        }
16964    }
16965
16966    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16967        type Borrowed<'a> = &'a mut Self;
16968        fn take_or_borrow<'a>(
16969            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16970        ) -> Self::Borrowed<'a> {
16971            value
16972        }
16973    }
16974
16975    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16976        type Owned = Self;
16977
16978        #[inline(always)]
16979        fn inline_align(_context: fidl::encoding::Context) -> usize {
16980            4
16981        }
16982
16983        #[inline(always)]
16984        fn inline_size(_context: fidl::encoding::Context) -> usize {
16985            4
16986        }
16987    }
16988
16989    unsafe impl
16990        fidl::encoding::Encode<
16991            ProviderSocketWithOptionsResponse,
16992            fidl::encoding::DefaultFuchsiaResourceDialect,
16993        > for &mut ProviderSocketWithOptionsResponse
16994    {
16995        #[inline]
16996        unsafe fn encode(
16997            self,
16998            encoder: &mut fidl::encoding::Encoder<
16999                '_,
17000                fidl::encoding::DefaultFuchsiaResourceDialect,
17001            >,
17002            offset: usize,
17003            _depth: fidl::encoding::Depth,
17004        ) -> fidl::Result<()> {
17005            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
17006            // Delegate to tuple encoding.
17007            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17008                (
17009                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17010                ),
17011                encoder, offset, _depth
17012            )
17013        }
17014    }
17015    unsafe impl<
17016        T0: fidl::encoding::Encode<
17017                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17018                fidl::encoding::DefaultFuchsiaResourceDialect,
17019            >,
17020    >
17021        fidl::encoding::Encode<
17022            ProviderSocketWithOptionsResponse,
17023            fidl::encoding::DefaultFuchsiaResourceDialect,
17024        > for (T0,)
17025    {
17026        #[inline]
17027        unsafe fn encode(
17028            self,
17029            encoder: &mut fidl::encoding::Encoder<
17030                '_,
17031                fidl::encoding::DefaultFuchsiaResourceDialect,
17032            >,
17033            offset: usize,
17034            depth: fidl::encoding::Depth,
17035        ) -> fidl::Result<()> {
17036            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
17037            // Zero out padding regions. There's no need to apply masks
17038            // because the unmasked parts will be overwritten by fields.
17039            // Write the fields.
17040            self.0.encode(encoder, offset + 0, depth)?;
17041            Ok(())
17042        }
17043    }
17044
17045    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17046        for ProviderSocketWithOptionsResponse
17047    {
17048        #[inline(always)]
17049        fn new_empty() -> Self {
17050            Self {
17051                s: fidl::new_empty!(
17052                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17053                    fidl::encoding::DefaultFuchsiaResourceDialect
17054                ),
17055            }
17056        }
17057
17058        #[inline]
17059        unsafe fn decode(
17060            &mut self,
17061            decoder: &mut fidl::encoding::Decoder<
17062                '_,
17063                fidl::encoding::DefaultFuchsiaResourceDialect,
17064            >,
17065            offset: usize,
17066            _depth: fidl::encoding::Depth,
17067        ) -> fidl::Result<()> {
17068            decoder.debug_check_bounds::<Self>(offset);
17069            // Verify that padding bytes are zero.
17070            fidl::decode!(
17071                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17072                fidl::encoding::DefaultFuchsiaResourceDialect,
17073                &mut self.s,
17074                decoder,
17075                offset + 0,
17076                _depth
17077            )?;
17078            Ok(())
17079        }
17080    }
17081
17082    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
17083        type Borrowed<'a> = &'a mut Self;
17084        fn take_or_borrow<'a>(
17085            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17086        ) -> Self::Borrowed<'a> {
17087            value
17088        }
17089    }
17090
17091    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
17092        type Owned = Self;
17093
17094        #[inline(always)]
17095        fn inline_align(_context: fidl::encoding::Context) -> usize {
17096            4
17097        }
17098
17099        #[inline(always)]
17100        fn inline_size(_context: fidl::encoding::Context) -> usize {
17101            4
17102        }
17103    }
17104
17105    unsafe impl
17106        fidl::encoding::Encode<
17107            ProviderSocketResponse,
17108            fidl::encoding::DefaultFuchsiaResourceDialect,
17109        > for &mut ProviderSocketResponse
17110    {
17111        #[inline]
17112        unsafe fn encode(
17113            self,
17114            encoder: &mut fidl::encoding::Encoder<
17115                '_,
17116                fidl::encoding::DefaultFuchsiaResourceDialect,
17117            >,
17118            offset: usize,
17119            _depth: fidl::encoding::Depth,
17120        ) -> fidl::Result<()> {
17121            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17122            // Delegate to tuple encoding.
17123            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17124                (
17125                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17126                ),
17127                encoder, offset, _depth
17128            )
17129        }
17130    }
17131    unsafe impl<
17132        T0: fidl::encoding::Encode<
17133                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17134                fidl::encoding::DefaultFuchsiaResourceDialect,
17135            >,
17136    >
17137        fidl::encoding::Encode<
17138            ProviderSocketResponse,
17139            fidl::encoding::DefaultFuchsiaResourceDialect,
17140        > for (T0,)
17141    {
17142        #[inline]
17143        unsafe fn encode(
17144            self,
17145            encoder: &mut fidl::encoding::Encoder<
17146                '_,
17147                fidl::encoding::DefaultFuchsiaResourceDialect,
17148            >,
17149            offset: usize,
17150            depth: fidl::encoding::Depth,
17151        ) -> fidl::Result<()> {
17152            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17153            // Zero out padding regions. There's no need to apply masks
17154            // because the unmasked parts will be overwritten by fields.
17155            // Write the fields.
17156            self.0.encode(encoder, offset + 0, depth)?;
17157            Ok(())
17158        }
17159    }
17160
17161    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17162        for ProviderSocketResponse
17163    {
17164        #[inline(always)]
17165        fn new_empty() -> Self {
17166            Self {
17167                s: fidl::new_empty!(
17168                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17169                    fidl::encoding::DefaultFuchsiaResourceDialect
17170                ),
17171            }
17172        }
17173
17174        #[inline]
17175        unsafe fn decode(
17176            &mut self,
17177            decoder: &mut fidl::encoding::Decoder<
17178                '_,
17179                fidl::encoding::DefaultFuchsiaResourceDialect,
17180            >,
17181            offset: usize,
17182            _depth: fidl::encoding::Depth,
17183        ) -> fidl::Result<()> {
17184            decoder.debug_check_bounds::<Self>(offset);
17185            // Verify that padding bytes are zero.
17186            fidl::decode!(
17187                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17188                fidl::encoding::DefaultFuchsiaResourceDialect,
17189                &mut self.s,
17190                decoder,
17191                offset + 0,
17192                _depth
17193            )?;
17194            Ok(())
17195        }
17196    }
17197
17198    impl SocketDescribeResponse {
17199        #[inline(always)]
17200        fn max_ordinal_present(&self) -> u64 {
17201            if let Some(_) = self.event {
17202                return 1;
17203            }
17204            0
17205        }
17206    }
17207
17208    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
17209        type Borrowed<'a> = &'a mut Self;
17210        fn take_or_borrow<'a>(
17211            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17212        ) -> Self::Borrowed<'a> {
17213            value
17214        }
17215    }
17216
17217    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
17218        type Owned = Self;
17219
17220        #[inline(always)]
17221        fn inline_align(_context: fidl::encoding::Context) -> usize {
17222            8
17223        }
17224
17225        #[inline(always)]
17226        fn inline_size(_context: fidl::encoding::Context) -> usize {
17227            16
17228        }
17229    }
17230
17231    unsafe impl
17232        fidl::encoding::Encode<
17233            SocketDescribeResponse,
17234            fidl::encoding::DefaultFuchsiaResourceDialect,
17235        > for &mut SocketDescribeResponse
17236    {
17237        unsafe fn encode(
17238            self,
17239            encoder: &mut fidl::encoding::Encoder<
17240                '_,
17241                fidl::encoding::DefaultFuchsiaResourceDialect,
17242            >,
17243            offset: usize,
17244            mut depth: fidl::encoding::Depth,
17245        ) -> fidl::Result<()> {
17246            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
17247            // Vector header
17248            let max_ordinal: u64 = self.max_ordinal_present();
17249            encoder.write_num(max_ordinal, offset);
17250            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17251            // Calling encoder.out_of_line_offset(0) is not allowed.
17252            if max_ordinal == 0 {
17253                return Ok(());
17254            }
17255            depth.increment()?;
17256            let envelope_size = 8;
17257            let bytes_len = max_ordinal as usize * envelope_size;
17258            #[allow(unused_variables)]
17259            let offset = encoder.out_of_line_offset(bytes_len);
17260            let mut _prev_end_offset: usize = 0;
17261            if 1 > max_ordinal {
17262                return Ok(());
17263            }
17264
17265            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17266            // are envelope_size bytes.
17267            let cur_offset: usize = (1 - 1) * envelope_size;
17268
17269            // Zero reserved fields.
17270            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17271
17272            // Safety:
17273            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17274            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17275            //   envelope_size bytes, there is always sufficient room.
17276            fidl::encoding::encode_in_envelope_optional::<
17277                fidl::encoding::HandleType<
17278                    fidl::EventPair,
17279                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17280                    2147483648,
17281                >,
17282                fidl::encoding::DefaultFuchsiaResourceDialect,
17283            >(
17284                self.event.as_mut().map(
17285                    <fidl::encoding::HandleType<
17286                        fidl::EventPair,
17287                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17288                        2147483648,
17289                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
17290                ),
17291                encoder,
17292                offset + cur_offset,
17293                depth,
17294            )?;
17295
17296            _prev_end_offset = cur_offset + envelope_size;
17297
17298            Ok(())
17299        }
17300    }
17301
17302    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17303        for SocketDescribeResponse
17304    {
17305        #[inline(always)]
17306        fn new_empty() -> Self {
17307            Self::default()
17308        }
17309
17310        unsafe fn decode(
17311            &mut self,
17312            decoder: &mut fidl::encoding::Decoder<
17313                '_,
17314                fidl::encoding::DefaultFuchsiaResourceDialect,
17315            >,
17316            offset: usize,
17317            mut depth: fidl::encoding::Depth,
17318        ) -> fidl::Result<()> {
17319            decoder.debug_check_bounds::<Self>(offset);
17320            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17321                None => return Err(fidl::Error::NotNullable),
17322                Some(len) => len,
17323            };
17324            // Calling decoder.out_of_line_offset(0) is not allowed.
17325            if len == 0 {
17326                return Ok(());
17327            };
17328            depth.increment()?;
17329            let envelope_size = 8;
17330            let bytes_len = len * envelope_size;
17331            let offset = decoder.out_of_line_offset(bytes_len)?;
17332            // Decode the envelope for each type.
17333            let mut _next_ordinal_to_read = 0;
17334            let mut next_offset = offset;
17335            let end_offset = offset + bytes_len;
17336            _next_ordinal_to_read += 1;
17337            if next_offset >= end_offset {
17338                return Ok(());
17339            }
17340
17341            // Decode unknown envelopes for gaps in ordinals.
17342            while _next_ordinal_to_read < 1 {
17343                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17344                _next_ordinal_to_read += 1;
17345                next_offset += envelope_size;
17346            }
17347
17348            let next_out_of_line = decoder.next_out_of_line();
17349            let handles_before = decoder.remaining_handles();
17350            if let Some((inlined, num_bytes, num_handles)) =
17351                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17352            {
17353                let member_inline_size = <fidl::encoding::HandleType<
17354                    fidl::EventPair,
17355                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17356                    2147483648,
17357                > as fidl::encoding::TypeMarker>::inline_size(
17358                    decoder.context
17359                );
17360                if inlined != (member_inline_size <= 4) {
17361                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17362                }
17363                let inner_offset;
17364                let mut inner_depth = depth.clone();
17365                if inlined {
17366                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17367                    inner_offset = next_offset;
17368                } else {
17369                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17370                    inner_depth.increment()?;
17371                }
17372                let val_ref =
17373                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
17374                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
17375                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17376                {
17377                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17378                }
17379                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17380                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17381                }
17382            }
17383
17384            next_offset += envelope_size;
17385
17386            // Decode the remaining unknown envelopes.
17387            while next_offset < end_offset {
17388                _next_ordinal_to_read += 1;
17389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17390                next_offset += envelope_size;
17391            }
17392
17393            Ok(())
17394        }
17395    }
17396}