in src/plugin/plugin_amqplib.rs [148:173]
fn inject_sw_header(
request_id: Option<i64>, execute_data: &mut ExecuteData, peer: &str,
) -> crate::Result<()> {
const HEADER_NAME: &str = "application_headers";
let sw_header = RequestContext::try_get_sw_header(request_id, peer)?;
let message = execute_data
.get_mut_parameter(0)
.as_mut_z_obj()
.context("message isn't object")?;
let has = message
.call("has", [ZVal::from(HEADER_NAME)])?
.expect_bool()?;
if has {
let mut headers = message.call("get", [ZVal::from(HEADER_NAME)])?;
let headers = headers.expect_mut_z_obj()?;
headers.call("set", [ZVal::from(SW_HEADER), ZVal::from(sw_header)])?;
} else {
let headers = Self::new_sw_headers(&sw_header)?;
message.call("set", [ZVal::from(HEADER_NAME), ZVal::from(headers)])?;
}
Ok(())
}