in src/execute.rs [308:333]
fn infer_request_id(execute_data: &mut ExecuteData) -> Option<i64> {
if !IS_SWOOLE.load(Ordering::Relaxed) {
return None;
}
let mut prev_execute_data_ptr = execute_data.as_mut_ptr();
loop {
let prev_execute_data = (unsafe { ExecuteData::try_from_mut_ptr(prev_execute_data_ptr) })?;
let func_name = prev_execute_data.func().get_function_name();
if !func_name
.map(|s| s == &HACK_SWOOLE_ON_REQUEST_FUNCTION_NAME.as_bytes())
.unwrap_or_default()
{
prev_execute_data_ptr = unsafe { (*prev_execute_data_ptr).prev_execute_data };
continue;
}
let request = prev_execute_data.get_mut_parameter(0).as_mut_z_obj()?;
match request.get_mut_property("fd").as_long() {
Some(fd) => return Some(fd),
None => {
error!("infer request id failed");
return None;
}
}
}
}