add fn to pass ip:port as values

This commit is contained in:
Vinzenz Schroeter 2025-04-12 16:47:40 +02:00
parent 5eed5ecde2
commit bbe4000468
3 changed files with 46 additions and 14 deletions

View file

@ -1,5 +1,6 @@
use servicepoint::{Connection, Packet, TypedCommand, UdpConnection};
use std::ffi::{c_char, CStr};
use std::net::{Ipv4Addr, SocketAddrV4};
use std::ptr::NonNull;
/// Creates a new instance of [UdpConnection].
@ -9,7 +10,7 @@ use std::ptr::NonNull;
/// # Examples
///
/// ```C
/// CConnection connection = sp_connection_open("172.23.42.29:2342");
/// UdpConnection connection = sp_connection_open("172.23.42.29:2342");
/// if (connection != NULL)
/// sp_connection_send_command(connection, sp_command_clear());
/// ```
@ -28,17 +29,29 @@ pub unsafe extern "C" fn sp_connection_open(
Box::into_raw(Box::new(connection))
}
//#[no_mangle]
//pub unsafe extern "C" fn sp_connection_open_ipv4(
// host: SocketAddrV4,
//) -> *mut UdpConnection {
// let connection = match servicepoint::UdpConnection::open(host) {
// Err(_) => return std::ptr::null_mut(),
// Ok(value) => value,
// };
//
// Box::into_raw(Box::new(UdpConnection(connection)))
//}
/// Creates a new instance of [UdpConnection].
///
/// returns: NULL if connection fails, or connected instance
///
/// # Examples
///
/// ```C
/// UdpConnection connection = sp_connection_open_ipv4(172, 23, 42, 29, 2342);
/// if (connection != NULL)
/// sp_connection_send_command(connection, sp_command_clear());
/// ```
#[no_mangle]
pub unsafe extern "C" fn sp_connection_open_ipv4(
ip1: u8, ip2: u8, ip3: u8, ip4: u8,
port: u16,
) -> *mut UdpConnection {
let addr = SocketAddrV4::new(Ipv4Addr::from( [ip1, ip2, ip3, ip4]), port);
let connection = match UdpConnection::open(addr) {
Err(_) => return std::ptr::null_mut(),
Ok(value) => value,
};
Box::into_raw(Box::new(connection))
}
// /// Creates a new instance of [SPUdpConnection] for testing that does not actually send anything.
// ///