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

Function execute_internal

src/execute.rs:70–155  ·  view source on GitHub ↗
(
    execute_data: *mut sys::zend_execute_data, return_value: *mut sys::zval,
)

Source from the content-addressed store, hash-verified

68 None;
69
70unsafe extern "C" fn execute_internal(
71 execute_data: *mut sys::zend_execute_data, return_value: *mut sys::zval,
72) {
73 unsafe {
74 let (execute_data, return_value) = match (
75 ExecuteData::try_from_mut_ptr(execute_data),
76 ZVal::try_from_mut_ptr(return_value),
77 ) {
78 (Some(execute_data), Some(return_value)) => (execute_data, return_value),
79 (execute_data, return_value) => {
80 ori_execute_internal(execute_data, return_value);
81 return;
82 }
83 };
84
85 let (function_name, class_name) = match get_function_and_class_name(execute_data) {
86 Ok(x) => x,
87 Err(err) => {
88 error!(?err, "get function and class name failed");
89 ori_execute_internal(Some(execute_data), Some(return_value));
90 return;
91 }
92 };
93
94 trace!(
95 ?function_name,
96 ?class_name,
97 "execute_internal function and class name"
98 );
99
100 let function_name = match function_name {
101 Some(function_name) => function_name,
102 None => {
103 ori_execute_internal(Some(execute_data), Some(return_value));
104 return;
105 }
106 };
107
108 if function_name == HACK_SWOOLE_ON_REQUEST_FUNCTION_NAME {
109 ori_execute_internal(Some(execute_data), Some(return_value));
110 return;
111 }
112
113 let Some((before, after)) = select_plugin_hook(class_name.as_deref(), &function_name)
114 else {
115 ori_execute_internal(Some(execute_data), Some(return_value));
116 return;
117 };
118
119 let request_id = infer_request_id(execute_data);
120 trace!(
121 ?request_id,
122 ?function_name,
123 ?class_name,
124 "execute_internal infer request id"
125 );
126
127 let result = catch_unwind_result(AssertUnwindSafe(|| before(request_id, execute_data)));

Callers 1

ori_execute_internalFunction · 0.85

Calls 5

ori_execute_internalFunction · 0.85
select_plugin_hookFunction · 0.85
infer_request_idFunction · 0.85
catch_unwind_resultFunction · 0.85

Tested by

no test coverage detected