use super::ffi::{
ext_php_rs_worker_request_shutdown, ext_php_rs_worker_request_startup,
ext_php_rs_worker_reset_superglobals,
};
use crate::ffi::ZEND_RESULT_CODE_SUCCESS;
use std::fmt;
#[derive(Debug)]
#[non_exhaustive]
pub enum WorkerError {
StartupFailed,
}
impl fmt::Display for WorkerError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::StartupFailed => write!(f, "Worker request startup failed"),
}
}
}
impl std::error::Error for WorkerError {}
pub fn worker_request_shutdown() {
unsafe {
ext_php_rs_worker_request_shutdown();
}
}
pub fn worker_request_startup() -> Result<(), WorkerError> {
let result = unsafe { ext_php_rs_worker_request_startup() };
if result == ZEND_RESULT_CODE_SUCCESS {
Ok(())
} else {
Err(WorkerError::StartupFailed)
}
}
pub fn worker_reset_superglobals() {
unsafe {
ext_php_rs_worker_reset_superglobals();
}
}