use crate::io::sys::RawFd;
use crate::io::Socket;
use socket2::{Domain, Protocol, Type};
use std::net::SocketAddr;
#[inline(always)]
pub(crate) async fn new_socket(
addr: &SocketAddr,
socket_type: Type,
protocol: Protocol,
) -> std::io::Result<RawFd> {
match addr {
SocketAddr::V4(_) => Socket::new(Domain::IPV4, socket_type, protocol).await,
SocketAddr::V6(_) => Socket::new(Domain::IPV6, socket_type, protocol).await,
}
}
#[inline(always)]
pub(crate) async fn new_tcp_socket(addr: &SocketAddr) -> std::io::Result<RawFd> {
new_socket(addr, Type::STREAM, Protocol::TCP).await
}
#[inline(always)]
pub(crate) async fn new_udp_socket(addr: &SocketAddr) -> std::io::Result<RawFd> {
new_socket(addr, Type::DGRAM, Protocol::UDP).await
}