summaryrefslogtreecommitdiff
path: root/kafka/protocol/frame.py
diff options
context:
space:
mode:
authorDana Powers <dana.powers@gmail.com>2017-08-15 13:00:02 -0700
committerGitHub <noreply@github.com>2017-08-15 13:00:02 -0700
commitba7afd9bc9362055ec0bedcf53eb6f8909dc22d2 (patch)
treef68b4dc2653df1e379da7b497e0fa76a19d6c5a5 /kafka/protocol/frame.py
parentcbc6fdc4b973a6a94953c9ce9c33e54e415e45bf (diff)
downloadkafka-python-ba7afd9bc9362055ec0bedcf53eb6f8909dc22d2.tar.gz
BrokerConnection receive bytes pipe (#1032)
Diffstat (limited to 'kafka/protocol/frame.py')
-rw-r--r--kafka/protocol/frame.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/kafka/protocol/frame.py b/kafka/protocol/frame.py
new file mode 100644
index 0000000..7b4a32b
--- /dev/null
+++ b/kafka/protocol/frame.py
@@ -0,0 +1,30 @@
+class KafkaBytes(bytearray):
+ def __init__(self, size):
+ super(KafkaBytes, self).__init__(size)
+ self._idx = 0
+
+ def read(self, nbytes=None):
+ if nbytes is None:
+ nbytes = len(self) - self._idx
+ start = self._idx
+ self._idx += nbytes
+ if self._idx > len(self):
+ self._idx = len(self)
+ return bytes(self[start:self._idx])
+
+ def write(self, data):
+ start = self._idx
+ self._idx += len(data)
+ self[start:self._idx] = data
+
+ def seek(self, idx):
+ self._idx = idx
+
+ def tell(self):
+ return self._idx
+
+ def __str__(self):
+ return 'KafkaBytes(%d)' % len(self)
+
+ def __repr__(self):
+ return str(self)