summaryrefslogtreecommitdiff
path: root/kafka/record/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'kafka/record/util.py')
-rw-r--r--kafka/record/util.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/kafka/record/util.py b/kafka/record/util.py
index 55d7adb..74b9a69 100644
--- a/kafka/record/util.py
+++ b/kafka/record/util.py
@@ -1,6 +1,10 @@
import binascii
from kafka.record._crc32c import crc as crc32c_py
+try:
+ from crc32c import crc32 as crc32c_c
+except ImportError:
+ crc32c_c = None
def encode_varint(value, write):
@@ -113,11 +117,15 @@ def decode_varint(buffer, pos=0):
raise ValueError("Out of int64 range")
-def calc_crc32c(memview):
+_crc32c = crc32c_py
+if crc32c_c is not None:
+ _crc32c = crc32c_c
+
+
+def calc_crc32c(memview, _crc32c=_crc32c):
""" Calculate CRC-32C (Castagnoli) checksum over a memoryview of data
"""
- crc = crc32c_py(memview)
- return crc
+ return _crc32c(memview)
def calc_crc32(memview):