use crate::default_id_generator::DefaultIdGenerator;
use crate::id_generator_options::IdGeneratorOptions;
use std::sync::Mutex;
use std::time::SystemTime;
use lazy_static::lazy_static;
lazy_static! {
pub static ref ID_GENERATOR: Mutex<DefaultIdGenerator> = Mutex::new(DefaultIdGenerator::default());
}
pub fn set_id_generator(options: IdGeneratorOptions) {
let mut generator = ID_GENERATOR.lock().unwrap();
*generator = DefaultIdGenerator::new(options);
}
pub fn next_id() -> i64 {
let mut generator = ID_GENERATOR.lock().unwrap();
generator.new_long() }
pub fn extract_time(id: i64) -> SystemTime {
let generator = ID_GENERATOR.lock().unwrap();
generator.extract_time(id)
}