add fn to pass ip:port as values
This commit is contained in:
		
							parent
							
								
									9f5a232030
								
							
						
					
					
						commit
						f6e35f1259
					
				
					 3 changed files with 46 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -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.
 | 
			
		||||
// ///
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue