(execute_data: &mut ExecuteData)
| 306 | } |
| 307 | |
| 308 | fn infer_request_id(execute_data: &mut ExecuteData) -> Option<i64> { |
| 309 | if !IS_SWOOLE.load(Ordering::Relaxed) { |
| 310 | return None; |
| 311 | } |
| 312 | |
| 313 | let mut prev_execute_data_ptr = execute_data.as_mut_ptr(); |
| 314 | loop { |
| 315 | let prev_execute_data = (unsafe { ExecuteData::try_from_mut_ptr(prev_execute_data_ptr) })?; |
| 316 | let func_name = prev_execute_data.func().get_function_name(); |
| 317 | if !func_name |
| 318 | .map(|s| s == &HACK_SWOOLE_ON_REQUEST_FUNCTION_NAME.as_bytes()) |
| 319 | .unwrap_or_default() |
| 320 | { |
| 321 | prev_execute_data_ptr = unsafe { (*prev_execute_data_ptr).prev_execute_data }; |
| 322 | continue; |
| 323 | } |
| 324 | let request = prev_execute_data.get_mut_parameter(0).as_mut_z_obj()?; |
| 325 | match request.get_mut_property("fd").as_long() { |
| 326 | Some(fd) => return Some(fd), |
| 327 | None => { |
| 328 | error!("infer request id failed"); |
| 329 | return None; |
| 330 | } |
| 331 | } |
| 332 | } |
| 333 | } |
| 334 | |
| 335 | pub fn register_observer_handlers() { |
| 336 | #[cfg(phper_major_version = "8")] |
no test coverage detected