use crate::{Capabilities, RecvMeta, Transmit};
use std::{
fmt::Debug,
io::{self, IoSliceMut},
net::SocketAddr,
task::{Context, Poll},
};
mod tokio;
pub use self::tokio::UdpSocket;
pub trait AsyncUdpSocket: Send + Debug + 'static {
fn poll_send(
&self,
cx: &mut Context<'_>,
capabilities: &Capabilities,
transmits: &[Transmit],
) -> Poll<Result<usize, io::Error>>;
fn poll_recv(
&self,
cx: &mut Context<'_>,
bufs: &mut [IoSliceMut<'_>],
meta: &mut [RecvMeta],
) -> Poll<io::Result<usize>>;
fn local_addr(&self) -> io::Result<SocketAddr>;
fn peer_addr(&self) -> io::Result<SocketAddr>;
}