use super::super::datatables::proxies;
use super::super::leak;
use super::super::server::export;
use crate::interfaces::ServerGameDll;
use crate::server::Module;
use sdk_raw::test_support::{mock_vtable, unexpected_call};
use std::cell::Cell;
use std::ptr::null_mut;
thread_local! {
static PROXIES: Cell<*mut sys::CStandardSendProxies> = const { Cell::new(null_mut()) };
}
pub fn export_standard_proxies() {
PROXIES.set(leak(proxies(null_mut())));
let vtable = Box::leak(unsafe {
mock_vtable::<sys::IServerGameDLL__bindgen_vtable>(unexpected_call as *const (), |vtable| {
(&raw mut (*vtable).IServerGameDLL_GetStandardSendProxies).write(standard_send_proxies);
})
});
export(
Module::GameServer,
ServerGameDll::VERSION,
leak(sys::IServerGameDLL { vtable_: vtable }),
);
}
unsafe extern "C" fn standard_send_proxies(
_: *mut sys::IServerGameDLL,
) -> *mut sys::CStandardSendProxies {
PROXIES.get()
}