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

Method hook_memcached_server_key_methods

src/plugin/plugin_memcached.rs:255–304  ·  view source on GitHub ↗
(
        &self, class_name: &str, function_name: &str,
    )

Source from the content-addressed store, hash-verified

253
254 #[instrument(skip_all)]
255 fn hook_memcached_server_key_methods(
256 &self, class_name: &str, function_name: &str,
257 ) -> (Box<BeforeExecuteHook>, Box<AfterExecuteHook>) {
258 let class_name = class_name.to_owned();
259 let function_name = function_name.to_owned();
260 (
261 Box::new(move |request_id, execute_data| {
262 let server_key = {
263 let server_key = execute_data.get_parameter(0);
264 if server_key.get_type_info().is_string() {
265 Some(server_key.clone())
266 } else {
267 // The `*Multi` methods will failed here.
268 warn!(function_name, "The argument server_key isn't string");
269 None
270 }
271 };
272
273 let key = execute_data
274 .get_parameter(1)
275 .as_z_str()
276 .and_then(|key| key.to_str().ok())
277 .map(ToOwned::to_owned);
278
279 let this = get_this_mut(execute_data)?;
280
281 let peer = server_key
282 .map(|server_key| get_peer(this, server_key))
283 .unwrap_or_default();
284
285 debug!(peer, "Get memcached peer");
286
287 let tag_info = MEMCACHE_SERVER_KEY_METHOD_MAPPING
288 .get(&*function_name.to_ascii_lowercase())
289 .unwrap();
290
291 let span = create_exit_span(
292 request_id,
293 &class_name,
294 &function_name,
295 &peer,
296 tag_info,
297 key.as_deref(),
298 )?;
299
300 Ok(Box::new(span))
301 }),
302 Box::new(after_hook),
303 )
304 }
305}
306
307#[instrument(skip_all)]

Callers 1

hookMethod · 0.80

Calls 3

get_this_mutFunction · 0.85
get_peerFunction · 0.70
create_exit_spanFunction · 0.70

Tested by

no test coverage detected