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

Function execute_ex

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

Source from the content-addressed store, hash-verified

155}
156
157unsafe extern "C" fn execute_ex(execute_data: *mut sys::zend_execute_data) {
158 unsafe {
159 let execute_data = match ExecuteData::try_from_mut_ptr(execute_data) {
160 Some(execute_data) => execute_data,
161 None => {
162 ori_execute_ex(None);
163 return;
164 }
165 };
166
167 let (function_name, class_name) = match get_function_and_class_name(execute_data) {
168 Ok(x) => x,
169 Err(err) => {
170 error!(?err, "get function and class name failed");
171 ori_execute_ex(Some(execute_data));
172 return;
173 }
174 };
175
176 trace!(
177 ?function_name,
178 ?class_name,
179 "execute_ex function and class name"
180 );
181
182 let function_name = match function_name {
183 Some(function_name) => function_name,
184 None => {
185 ori_execute_ex(Some(execute_data));
186 return;
187 }
188 };
189
190 let Some((before, after)) = select_plugin_hook(class_name.as_deref(), &function_name)
191 else {
192 ori_execute_ex(Some(execute_data));
193 return;
194 };
195
196 let request_id = infer_request_id(execute_data);
197 trace!(
198 ?request_id,
199 ?function_name,
200 ?class_name,
201 "execute_ex infer request id"
202 );
203
204 let result = catch_unwind_result(AssertUnwindSafe(|| before(request_id, execute_data)));
205 if let Err(err) = &result {
206 error!(
207 ?request_id,
208 ?function_name,
209 ?class_name,
210 ?err,
211 "before execute ex"
212 );
213 }
214

Callers

nothing calls this directly

Calls 5

ori_execute_exFunction · 0.85
select_plugin_hookFunction · 0.85
infer_request_idFunction · 0.85
catch_unwind_resultFunction · 0.85

Tested by

no test coverage detected