Exemple #1
0
    def from_jmessage(cls, jmsg):
        sender = jmsg.sender.full()
        messageType = jmsg.headers['rmake-type']
        messageClass = _MessageTypeRegistrar.messageTypes.get(messageType)
        if not messageClass:
            log.warning("Unknown message type %s from %s", messageType, sender)
            return None
        msg = messageClass()

        payloadType = jmsg.headers.get('content-type')
        if payloadType is None:
            msg.payload = None
        else:
            if payloadType == 'application/python-pickle':
                try:
                    msg.payload = chutney.loads(jmsg.payload)
                except:
                    log.warning("Failed to unpickle message from %s:", sender,
                            exc_info=1)
                    return None
            else:
                log.warning("Unknown payload type %s from %s", payloadType,
                        sender)
                return None

        msg.info.sender = jmsg.sender
        msg.info.id = jmsg.seq
        return msg
Exemple #2
0
 def _thaw(self):
     idx = self.data.index(':')
     kind = self.data[:idx]
     if kind == 'pickle':
         return chutney.loads(self.data[idx+1:])
     else:
         raise RuntimeError("Unrecognized serialization format %s" % kind)
Exemple #3
0
 def _filter_response(response):
     return chutney.loads(response.read())