use std::{
hash::{Hash, Hasher},
time::UNIX_EPOCH,
};
pub fn unique_state_id<A: Hash>(addr: &A) -> u64 {
let mut hasher = std::hash::DefaultHasher::new();
addr.hash(&mut hasher);
now_ms().hash(&mut hasher);
hasher.finish()
}
pub fn now_ms() -> u64 {
std::time::SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis() as u64
}
pub fn unknown_id_err(id: u16, name: &str) -> std::io::Error {
std::io::Error::new(std::io::ErrorKind::InvalidData, format!("unknown id for {}: {}", name, id))
}
pub fn unknown_version_err(version: u16, name: &str) -> std::io::Error {
std::io::Error::new(std::io::ErrorKind::InvalidData, format!("unknown version for {}: {}", name, version))
}