diff options
author | Dana Powers <dana.powers@rd.io> | 2015-12-09 10:14:10 -0800 |
---|---|---|
committer | Dana Powers <dana.powers@rd.io> | 2015-12-09 10:14:10 -0800 |
commit | 3a0a8e1ee4c39655ba12900eb6bd6f7901262239 (patch) | |
tree | 5d8cfdb107ac4846eb021af1c3fc5e05a003a5f5 /kafka/protocol/message.py | |
parent | f719ffcc047d4c6e4ad79d83257c4d1b2b014314 (diff) | |
download | kafka-python-3a0a8e1ee4c39655ba12900eb6bd6f7901262239.tar.gz |
Handle special __init__ signature in Message decode()
Diffstat (limited to 'kafka/protocol/message.py')
-rw-r--r-- | kafka/protocol/message.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kafka/protocol/message.py b/kafka/protocol/message.py index 8f32749..501ce47 100644 --- a/kafka/protocol/message.py +++ b/kafka/protocol/message.py @@ -31,6 +31,14 @@ class Message(Struct): self.crc = crc32(message[4:]) return self.SCHEMA.fields[0].encode(self.crc) + message[4:] + @classmethod + def decode(cls, data): + if isinstance(data, bytes): + data = BytesIO(data) + fields = [field.decode(data) for field in cls.SCHEMA.fields] + return cls(fields[4], key=fields[3], + magic=fields[1], attributes=fields[2], crc=fields[0]) + class MessageSet(AbstractType): ITEM = Schema( |