packer option added
diff --git a/sensors/cp_protocol.py b/sensors/cp_protocol.py
index 9b52646..79f94af 100644
--- a/sensors/cp_protocol.py
+++ b/sensors/cp_protocol.py
@@ -7,14 +7,12 @@
import binascii
import logging
-import msgpack
-
from logger import define_logger
# protocol contains 2 type of packet:
# 1 - header, which contains template schema of counters
# 2 - body, which contains only values in order as in template
-# it uses msgpack for optimization
+# it uses msgpack (or provided packer) for optimization
#
# packet has format:
# begin_data_prefixSIZE\n\nDATAend_data_postfix
@@ -42,7 +40,7 @@
# data
# data_len
- def __init__(self):
+ def __init__(self, packer):
# preinit
self.is_begin = False
self.is_end = False
@@ -52,6 +50,7 @@
self.srv_template = None
self.clt_template = None
self.tmpl_size = 0
+ self.packer = packer
def new_packet(self, part):
@@ -106,7 +105,7 @@
return None
# decode values list
- vals = msgpack.unpackb(self.data)
+ vals = self.packer.unpack(self.data)
dump = self.srv_template % tuple(vals)
return dump
else:
@@ -175,7 +174,7 @@
result.extend(header)
vals = self.get_matching_value_list(data)
- body = msgpack.packb(vals)
+ body = self.packer.pack(vals)
parts = Packet.create_packet(body, part_size)
result.extend(parts)
return result