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

Function observer_end

src/execute.rs:453–510  ·  view source on GitHub ↗
(
        execute_data: *mut sys::zend_execute_data, retval: *mut sys::zval,
    )

Source from the content-addressed store, hash-verified

451
452 #[allow(static_mut_refs)]
453 unsafe extern "C" fn observer_end(
454 execute_data: *mut sys::zend_execute_data, retval: *mut sys::zval,
455 ) {
456 unsafe {
457 let Some(execute_data) = ExecuteData::try_from_mut_ptr(execute_data) else {
458 return;
459 };
460 trace!(execute_data_ptr=?execute_data.as_ptr(), "start observer_end");
461
462 let Some((_, result)) = RESULT_MAP.remove(&execute_data.as_ptr()) else {
463 return;
464 };
465
466 let mut null = ZVal::from(());
467 let ret = match ZVal::try_from_mut_ptr(retval) {
468 Some(ret) => ret,
469 None => &mut null,
470 };
471
472 let Ok((function_name, class_name)) = get_function_and_class_name(execute_data) else {
473 return;
474 };
475
476 trace!(
477 ?function_name,
478 ?class_name,
479 "observer_end function and class name"
480 );
481
482 let Some(function_name) = function_name else {
483 return;
484 };
485
486 let Some((_, after)) = select_plugin_hook(class_name.as_deref(), &function_name) else {
487 return;
488 };
489
490 let request_id = infer_request_id(execute_data);
491 trace!(
492 ?request_id,
493 ?function_name,
494 ?class_name,
495 "observer_end infer request id"
496 );
497
498 if let Err(err) = catch_unwind_result(AssertUnwindSafe(|| {
499 after(request_id, result, execute_data, ret)
500 })) {
501 error!(
502 ?request_id,
503 ?function_name,
504 ?class_name,
505 ?err,
506 "run observer_end hook failed"
507 );
508 };
509 }
510 }

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