in src/plugin/plugin_memcached.rs [308:341]
fn after_hook(
_: Option<i64>, span: Box<dyn Any>, execute_data: &mut ExecuteData, return_value: &mut ZVal,
) -> crate::Result<()> {
let mut span = span.downcast::<Span>().expect("Downcast to Span failed");
if let Some(b) = return_value.as_bool() {
if !b {
span.span_object_mut().is_error = true;
let this = get_this_mut(execute_data)?;
let code = this.call(&"getResultCode".to_ascii_lowercase(), [])?;
let code = code.as_long().context("ResultCode isn't int")?;
debug!(code, "get memcached result code");
if code != 0 {
let message = this.call(&"getResultMessage".to_ascii_lowercase(), [])?;
let message = message
.as_z_str()
.context("ResultMessage isn't string")?
.to_str()?;
debug!(message, "get memcached result message");
span.add_log([
("ResultCode", code.to_string()),
("ResultMessage", message.to_owned()),
]);
}
}
}
log_exception(&mut *span);
Ok(())
}