summaryrefslogtreecommitdiff
path: root/kafka/protocol/api.py
diff options
context:
space:
mode:
authorDana Powers <dana.powers@gmail.com>2017-03-12 19:57:36 -0700
committerDana Powers <dana.powers@gmail.com>2017-03-13 11:16:18 -0700
commit894cfec656e44f92766775baf84cfd1d2e257901 (patch)
tree541b9074d0ea4aa67dc5f64904f7ebd3f44c2549 /kafka/protocol/api.py
parent899f11730db5f209c03cfad20111ec131ee4c70b (diff)
downloadkafka-python-request_response_classes.tar.gz
Derive all api classes from Request / Response base classesrequest_response_classes
Diffstat (limited to 'kafka/protocol/api.py')
-rw-r--r--kafka/protocol/api.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/kafka/protocol/api.py b/kafka/protocol/api.py
index 7779aac..ec24a39 100644
--- a/kafka/protocol/api.py
+++ b/kafka/protocol/api.py
@@ -1,5 +1,7 @@
from __future__ import absolute_import
+import abc
+
from .struct import Struct
from .types import Int16, Int32, String, Schema
@@ -16,3 +18,50 @@ class RequestHeader(Struct):
super(RequestHeader, self).__init__(
request.API_KEY, request.API_VERSION, correlation_id, client_id
)
+
+
+class Request(Struct):
+ __metaclass__ = abc.ABCMeta
+
+ @abc.abstractproperty
+ def API_KEY(self):
+ """Integer identifier for api request"""
+ pass
+
+ @abc.abstractproperty
+ def API_VERSION(self):
+ """Integer of api request version"""
+ pass
+
+ @abc.abstractproperty
+ def SCHEMA(self):
+ """An instance of Schema() representing the request structure"""
+ pass
+
+ @abc.abstractproperty
+ def RESPONSE_TYPE(self):
+ """The Response class associated with the api request"""
+ pass
+
+ def expect_response(self):
+ """Override this method if an api request does not always generate a response"""
+ return True
+
+
+class Response(Struct):
+ __metaclass__ = abc.ABCMeta
+
+ @abc.abstractproperty
+ def API_KEY(self):
+ """Integer identifier for api request/response"""
+ pass
+
+ @abc.abstractproperty
+ def API_VERSION(self):
+ """Integer of api request/response version"""
+ pass
+
+ @abc.abstractproperty
+ def SCHEMA(self):
+ """An instance of Schema() representing the response structure"""
+ pass