camure_ffi/
lib.rs

1use std::net::{IpAddr, Ipv4Addr, SocketAddr};
2
3#[repr(C)]
4pub struct SocketAddrIpv4 {
5    pub ip: [u8; 4],
6    pub port: u16,
7}
8
9impl Into<SocketAddr> for &SocketAddrIpv4 {
10    fn into(self) -> SocketAddr {
11        SocketAddr::new(
12            IpAddr::V4(Ipv4Addr::new(
13                self.ip[0], self.ip[1], self.ip[2], self.ip[3],
14            )),
15            self.port,
16        )
17    }
18}
19
20impl From<SocketAddr> for SocketAddrIpv4 {
21    fn from(socket_addr: SocketAddr) -> Self {
22        match socket_addr {
23            SocketAddr::V4(socket_addr) => Self {
24                ip: socket_addr.ip().octets(),
25                port: socket_addr.port(),
26            },
27            _ => panic!("Only IPv4 is supported"),
28        }
29    }
30}
31
32mod session;
33mod barrier;
34mod broadcast;