use rand;
use mapped_socket_addr::MappedSocketAddr;
#[derive(Debug, Clone, PartialEq, Eq, RustcEncodable, RustcDecodable)]
pub struct PubRendezvousInfo {
endpoints: Vec<MappedSocketAddr>,
secret: [u8; 4],
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PrivRendezvousInfo {
secret: [u8; 4],
}
pub fn gen_rendezvous_info(endpoints: Vec<MappedSocketAddr>)
-> (PrivRendezvousInfo, PubRendezvousInfo) {
let secret = rand::random();
let priv_info = PrivRendezvousInfo {
secret: secret,
};
let pub_info = PubRendezvousInfo {
endpoints: endpoints,
secret: secret,
};
(priv_info, pub_info)
}
pub fn decompose(info: PubRendezvousInfo) -> (Vec<MappedSocketAddr>, [u8; 4]) {
let PubRendezvousInfo { endpoints, secret } = info;
(endpoints, secret)
}
pub fn get_priv_secret(info: PrivRendezvousInfo) -> [u8; 4] {
info.secret
}