summaryrefslogtreecommitdiff
path: root/kafka/protocol/message.py
diff options
context:
space:
mode:
authorDana Powers <dana.powers@rd.io>2015-12-09 10:14:10 -0800
committerDana Powers <dana.powers@rd.io>2015-12-09 10:14:10 -0800
commit3a0a8e1ee4c39655ba12900eb6bd6f7901262239 (patch)
tree5d8cfdb107ac4846eb021af1c3fc5e05a003a5f5 /kafka/protocol/message.py
parentf719ffcc047d4c6e4ad79d83257c4d1b2b014314 (diff)
downloadkafka-python-3a0a8e1ee4c39655ba12900eb6bd6f7901262239.tar.gz
Handle special __init__ signature in Message decode()
Diffstat (limited to 'kafka/protocol/message.py')
-rw-r--r--kafka/protocol/message.py8
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(