use ::std::sync::{
atomic::{AtomicU16, Ordering},
Mutex,
OnceLock,
};
use capsicum::casper::Casper;
use capsicum_net::CasperExt;
use ctor::ctor;
mod nix;
mod std;
#[cfg(feature = "tokio")]
mod tokio;
static CASPER: OnceLock<Mutex<Casper>> = OnceLock::new();
#[test]
fn multiple_instances() {
let mut casper = CASPER.get().unwrap().lock().unwrap();
let _cap_net1 = casper.net().unwrap();
let _cap_net2 = casper.net().unwrap();
}
#[ctor]
unsafe fn casper_initialize() {
let casper = Mutex::new(unsafe { Casper::new().unwrap() });
CASPER.set(casper).unwrap();
}
static PORT: AtomicU16 = AtomicU16::new(8000);
fn next_port() -> u16 {
PORT.fetch_add(1, Ordering::Relaxed)
}