MCPcopy Create free account
hub / github.com/apache/skywalking-php / observer_begin

Function observer_begin

src/execute.rs:399–450  ·  view source on GitHub ↗
(execute_data: *mut sys::zend_execute_data)

Source from the content-addressed store, hash-verified

397
398 #[allow(static_mut_refs)]
399 unsafe extern "C" fn observer_begin(execute_data: *mut sys::zend_execute_data) {
400 unsafe {
401 let Some(execute_data) = ExecuteData::try_from_mut_ptr(execute_data) else {
402 return;
403 };
404 trace!(execute_data_ptr=?execute_data.as_ptr(), "start observer_begin");
405
406 let Ok((function_name, class_name)) = get_function_and_class_name(execute_data) else {
407 return;
408 };
409
410 trace!(
411 ?function_name,
412 ?class_name,
413 "observer_begin function and class name"
414 );
415
416 let Some(function_name) = function_name else {
417 return;
418 };
419
420 let Some((before, _)) = select_plugin_hook(class_name.as_deref(), &function_name)
421 else {
422 return;
423 };
424
425 let request_id = infer_request_id(execute_data);
426 trace!(
427 ?request_id,
428 ?function_name,
429 ?class_name,
430 "observer_begin infer request id"
431 );
432
433 let result =
434 match catch_unwind_result(AssertUnwindSafe(|| before(request_id, execute_data))) {
435 Ok(result) => result,
436 Err(err) => {
437 error!(
438 ?request_id,
439 ?function_name,
440 ?class_name,
441 ?err,
442 "run observer_begin hook failed"
443 );
444 return;
445 }
446 };
447
448 RESULT_MAP.insert(execute_data.as_ptr(), result);
449 }
450 }
451
452 #[allow(static_mut_refs)]
453 unsafe extern "C" fn observer_end(

Callers

nothing calls this directly

Calls 4

select_plugin_hookFunction · 0.85
infer_request_idFunction · 0.85
catch_unwind_resultFunction · 0.85

Tested by

no test coverage detected