pub struct ConnectedUdpSocket { /* private fields */ }Expand description
A UDP socket bound to a fixed remote peer — the connected-net.Conn shape Go’s
Dial(ctx, "udp", …) returns (a *gonet.UDPConn with a fixed destination).
The fork’s netstack netstack::UdpSocket is unconnected (send_to/recv_from carry the peer
per datagram, the net.PacketConn shape). This wrapper stores the peer so send
targets it implicitly and recv filters to datagrams from that peer, dropping
any from other sources — exactly what a kernel connect(2) on a UDP socket does. UDP stays
message-oriented (one send/recv = one datagram), as it is for Go’s UDP net.Conn.
Implementations§
Source§impl ConnectedUdpSocket
impl ConnectedUdpSocket
Sourcepub fn peer(&self) -> SocketAddr
pub fn peer(&self) -> SocketAddr
The connected peer this socket sends to / receives from.
Sourcepub fn local_addr(&self) -> SocketAddr
pub fn local_addr(&self) -> SocketAddr
The local address the underlying socket is bound to.
Sourcepub async fn send(&self, data: &[u8]) -> Result<(), Error>
pub async fn send(&self, data: &[u8]) -> Result<(), Error>
Send one datagram to the connected peer (Go UDP net.Conn::Write).
Sourcepub async fn recv(&self, buf: &mut [u8]) -> Result<usize, Error>
pub async fn recv(&self, buf: &mut [u8]) -> Result<usize, Error>
Receive one datagram from the connected peer into buf, returning the byte count (Go UDP
net.Conn::Read). Datagrams from any other source are discarded (connected-UDP semantics),
so this loops until a datagram from the connected peer arrives or the socket errors.
Auto Trait Implementations§
impl Freeze for ConnectedUdpSocket
impl RefUnwindSafe for ConnectedUdpSocket
impl Send for ConnectedUdpSocket
impl Sync for ConnectedUdpSocket
impl Unpin for ConnectedUdpSocket
impl UnsafeUnpin for ConnectedUdpSocket
impl UnwindSafe for ConnectedUdpSocket
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A, T> DynMessage<A> for T
impl<A, T> DynMessage<A> for T
Source§fn handle_dyn<'a>(
self: Box<T>,
state: &'a mut A,
actor_ref: ActorRef<A>,
tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>,
stop: &'a mut bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
fn handle_dyn<'a>( self: Box<T>, state: &'a mut A, actor_ref: ActorRef<A>, tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>, stop: &'a mut bool, ) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more