in qpid/messaging/driver.py [0:0]
def _decode(self, xfr):
dp = EMPTY_DP
mp = EMPTY_MP
for h in xfr.headers:
if isinstance(h, DeliveryProperties):
dp = h
elif isinstance(h, MessageProperties):
mp = h
ap = mp.application_headers
enc, dec = get_codec(mp.content_type)
try:
content = dec(xfr.payload)
except Exception as e:
raise DecodeError(e)
msg = Message(content)
msg.id = mp.message_id
if ap is not None:
msg.subject = ap.get(SUBJECT)
msg.user_id = mp.user_id
if mp.reply_to is not None:
msg.reply_to = reply_to2addr(mp.reply_to)
msg.correlation_id = mp.correlation_id
if dp.delivery_mode is not None:
msg.durable = dp.delivery_mode == delivery_mode.persistent
msg.priority = dp.priority
if dp.ttl is not None:
msg.ttl = dp.ttl/1000.0
msg.redelivered = dp.redelivered
msg.properties = mp.application_headers or {}
if mp.app_id is not None:
msg.properties["x-amqp-0-10.app-id"] = mp.app_id
if mp.content_encoding is not None:
msg.properties["x-amqp-0-10.content-encoding"] = mp.content_encoding
if dp.routing_key is not None:
msg.properties["x-amqp-0-10.routing-key"] = dp.routing_key
if dp.timestamp is not None:
msg.properties["x-amqp-0-10.timestamp"] = dp.timestamp
msg.content_type = mp.content_type
msg._transfer_id = xfr.id
return msg