#![allow(unsafe_code)]
use crate::hton::HtonCapabilities;
use crate::panic_guard::FfiBoundary;
use crate::runtime;
fn has(cap: HtonCapabilities) -> bool {
match runtime::handlerton() {
Some(h) => h.capabilities().contains(cap),
None => false,
}
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_transactional() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::TRANSACTIONS))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_xa() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::XA))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_savepoints() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::SAVEPOINTS))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_partitioning() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::PARTITIONING))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_tablespaces() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::TABLESPACES))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_dict_backend() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::DICT_BACKEND))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_sdi() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::SDI))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_engine_log() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::ENGINE_LOG))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_secondary_engine() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::SECONDARY_ENGINE))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_encryption() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::ENCRYPTION))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_clone() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::CLONE))
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__hton__is_page_tracking() -> bool {
FfiBoundary::run_default(false, || has(HtonCapabilities::PAGE_TRACKING))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn no_handlerton_reports_no_capability() {
assert!(!has(HtonCapabilities::TRANSACTIONS));
assert!(!has(HtonCapabilities::CLONE));
}
}