1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
extern crate libc;

extern {
    fn IPC_connect() -> libc::c_int;
    fn IPC_bind(listen_port: libc::c_int) -> libc::c_int;
    fn IPC_send(data: *mut libc::c_uchar,len: libc::c_int) -> libc::c_int;
    fn IPC_receive(data: *mut libc::c_uchar,len: libc::c_int) -> libc::c_int;
    fn IPC_close() -> libc::c_int;
}

pub fn connect() -> i32 {
    unsafe {
        IPC_connect()
    }
}

pub fn bind(listen_port: i32) -> i32 {
    unsafe {
        IPC_bind(listen_port)
    }
}

pub fn send(buf: &[u8], len: i32) -> i32 {
    unsafe {
        IPC_send(buf.as_ptr() as *mut u8,len)
    }
}

pub fn receive(buf: &mut [u8], len: i32) -> i32 {
    unsafe {
        IPC_receive(buf.as_mut_ptr(),len)
    }
}

pub fn close() -> i32 {
    unsafe {
        IPC_close()
    }
}