summaryrefslogtreecommitdiff
path: root/kafka/codec.py
diff options
context:
space:
mode:
authorDavid Arthur <mumrah@gmail.com>2012-11-16 15:02:12 -0500
committerDavid Arthur <mumrah@gmail.com>2012-11-16 15:02:49 -0500
commit26414d4a993b6d0fd9074b2e7c4abc4230ae52eb (patch)
tree79787ce084071488c92760b91570bd5920786f35 /kafka/codec.py
parent03abf98c0936a1d48af077ba9c41a11cd074ec5b (diff)
downloadkafka-python-26414d4a993b6d0fd9074b2e7c4abc4230ae52eb.tar.gz
Add Snappy support0.1-alpha
Fixes #2
Diffstat (limited to 'kafka/codec.py')
-rw-r--r--kafka/codec.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/kafka/codec.py b/kafka/codec.py
index 47ab074..83f3c0b 100644
--- a/kafka/codec.py
+++ b/kafka/codec.py
@@ -4,6 +4,13 @@ import logging
log = logging.getLogger("kafka.codec")
+try:
+ import snappy
+ hasSnappy=True
+except ImportError:
+ log.warn("Snappy codec not available")
+ hasSnappy=False
+
def gzip_encode(payload):
buf = StringIO()
f = gzip.GzipFile(fileobj=buf, mode='w', compresslevel=6)
@@ -21,3 +28,13 @@ def gzip_decode(payload):
f.close()
buf.close()
return out
+
+def snappy_encode(payload):
+ if not hasSnappy:
+ raise NotImplementedError("Snappy codec not available")
+ return snappy.compress(payload)
+
+def snappy_decode(payload):
+ if not hasSnappy:
+ raise NotImplementedError("Snappy codec not available")
+ return snappy.decompress(payload)