#![allow(unsafe_code)]
use crate::panic_guard::FfiBoundary;
use crate::runtime::EngineContext;
use crate::sys;
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__external_lock(
ctx: *mut EngineContext,
thd: *const sys::THD,
lock_type: i32,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let thd = unsafe { thd.as_ref() };
engine.external_lock(thd, lock_type)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__lock_count(ctx: *mut EngineContext) -> u32 {
FfiBoundary::run_default(1, || {
unsafe { &mut *ctx }.engine_mut().lock_count()
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__store_lock(ctx: *mut EngineContext, requested: i32) -> i32 {
FfiBoundary::run_default(requested, || {
unsafe { &mut *ctx }.engine_mut().store_lock(requested)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__unlock_row(ctx: *mut EngineContext) {
FfiBoundary::run_void(|| {
unsafe { &mut *ctx }.engine_mut().unlock_row();
});
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__start_stmt(
ctx: *mut EngineContext,
thd: *const sys::THD,
lock_type: i32,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let thd = unsafe { thd.as_ref() };
engine.start_stmt(thd, lock_type)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__was_semi_consistent_read(ctx: *mut EngineContext) -> bool {
FfiBoundary::run_default(false, || {
unsafe { &mut *ctx }.engine_mut().was_semi_consistent_read()
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__try_semi_consistent_read(
ctx: *mut EngineContext,
enable: bool,
) {
FfiBoundary::run_void(|| {
unsafe { &mut *ctx }
.engine_mut()
.try_semi_consistent_read(enable);
});
}