libeipc 0.1.0

Encrypted Inter-Process Communication Library
Documentation

use libeipc::EIPC_Server;
use rand::{thread_rng, Rng};


fn random_string(length: usize, allowed_chars: &str) -> String {
    let mut rng = thread_rng();
    (0..length)
        .map(|_| {
            let idx = rng.gen_range(0..allowed_chars.len());
            allowed_chars.chars().nth(idx).unwrap()
        })
        .collect()
}

fn main() {

    println!("EIPC_Server example running!");
    let mut eipc_server = EIPC_Server::new("./example-socket", String::from("0123456789012345"));

    eipc_server.set_message_handler(Box::new(|msg: &str, ppid: u32| -> String {
        println!("Message received: {}", msg);
        String::from("OK")
    }));

    eipc_server.set_handler("init", Box::new(|msg: &str, ppid: u32| -> String {
        println!("Init event! Message: {}", msg);
        String::from("OK")
    }));

    eipc_server.set_handler("update", Box::new(|msg: &str, ppid: u32| -> String {
        println!("Update event! Message: {}", msg);
        let allowed = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        let random_str = random_string(4098, allowed);
        random_str
    }));

    eipc_server.open();
}