enet_cs_sys/
lib.rs

1#![allow(non_camel_case_types)]
2#![allow(non_upper_case_globals)]
3#![allow(non_snake_case)]
4
5include! {concat!(env!("OUT_DIR"), "/bindings.rs")}
6
7pub const _ENetProtocolFlag_ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE: u32 = 1 << 7;
8pub const _ENetProtocolFlag_ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED: u32 = 1 << 6;
9pub const _ENetProtocolFlag_ENET_PROTOCOL_HEADER_FLAG_SENT_TIME: u32 = 1 << 14;
10pub const _ENetProtocolFlag_ENET_PROTOCOL_HEADER_FLAG_MASK: u32 =
11    _ENetProtocolFlag_ENET_PROTOCOL_HEADER_FLAG_SENT_TIME;
12pub const _ENetProtocolFlag_ENET_PROTOCOL_HEADER_SESSION_MASK: u32 = 3 << 12;
13pub const _ENetProtocolFlag_ENET_PROTOCOL_HEADER_SESSION_SHIFT: u32 = 12;
14
15pub const _ENetSocketWait_ENET_SOCKET_WAIT_NONE: u32 = 0;
16pub const _ENetSocketWait_ENET_SOCKET_WAIT_SEND: u32 = 1 << 0;
17pub const _ENetSocketWait_ENET_SOCKET_WAIT_RECEIVE: u32 = 1 << 1;
18pub const _ENetSocketWait_ENET_SOCKET_WAIT_INTERRUPT: u32 = 1 << 2;
19
20pub const _ENetPacketFlag_ENET_PACKET_FLAG_NONE: u32 = 0;
21pub const _ENetPacketFlag_ENET_PACKET_FLAG_RELIABLE: u32 = 1 << 0;
22pub const _ENetPacketFlag_ENET_PACKET_FLAG_UNSEQUENCED: u32 = 1 << 1;
23pub const _ENetPacketFlag_ENET_PACKET_FLAG_NO_ALLOCATE: u32 = 1 << 2;
24pub const _ENetPacketFlag_ENET_PACKET_FLAG_UNRELIABLE_FRAGMENTED: u32 = 1 << 3;
25pub const _ENetPacketFlag_ENET_PACKET_FLAG_INSTANT: u32 = 1 << 4;
26pub const _ENetPacketFlag_ENET_PACKET_FLAG_UNTHROTTLED: u32 = 1 << 5;
27pub const _ENetPacketFlag_ENET_PACKET_FLAG_SENT: u32 = 1 << 8;
28
29#[cfg(test)]
30mod tests {
31    use std::{ffi::CString, mem::MaybeUninit, time::Duration};
32
33    use crate::*;
34
35    #[test]
36    fn server_test() {
37        unsafe {
38            if enet_initialize() != 0 {
39                panic!("Enet could not be initialized.");
40            }
41
42            let address: MaybeUninit<ENetAddress> = MaybeUninit::uninit();
43            let mut address = address.assume_init();
44            // set the port to 8080
45            address.port = 8080;
46            // set the hostname to localhost 127.0.0.1; a CString must be used.
47            let address_hostname = CString::new("127.0.0.1").unwrap();
48            enet_address_set_hostname(&mut address, address_hostname.as_ptr());
49
50            // create host accepting 8 clients max, with 2 different channels, and automatically setting
51            // the in/out max bandwidth, and the buffer size by setting them to 0.
52            let host = enet_host_create(&address, 8, 2, 0, 0, 0);
53
54            // wait for a bit
55            std::thread::sleep(Duration::from_millis(1000));
56
57            // free the host and deinitialize ENet
58            enet_host_destroy(host);
59            enet_deinitialize();
60        }
61    }
62}