Add config callbacks

This commit is contained in:
Matias Fontanini
2016-06-04 18:16:21 -07:00
parent a74d46094f
commit 8e37440f58
10 changed files with 163 additions and 41 deletions

View File

@@ -18,13 +18,14 @@ void Consumer::rebalance_proxy(rd_kafka_t*, rd_kafka_resp_err_t error,
}
Consumer::Consumer(Configuration config)
: config_(move(config)) {
: KafkaHandleBase(move(config)) {
char error_buffer[512];
rd_kafka_conf_t* config_handle = get_configuration_handle();
// Set ourselves as the opaque pointer
rd_kafka_conf_set_opaque(config_.get_handle(), this);
rd_kafka_conf_set_rebalance_cb(config_.get_handle(), &Consumer::rebalance_proxy);
rd_kafka_conf_set_opaque(config_handle, this);
rd_kafka_conf_set_rebalance_cb(config_handle, &Consumer::rebalance_proxy);
rd_kafka_t* ptr = rd_kafka_new(RD_KAFKA_CONSUMER,
rd_kafka_conf_dup(config_.get_handle()),
rd_kafka_conf_dup(config_handle),
error_buffer, sizeof(error_buffer));
if (!ptr) {
throw Exception("Failed to create consumer handle: " + string(error_buffer));
@@ -126,10 +127,6 @@ TopicPartitionList Consumer::get_assignment() {
return convert(make_handle(list));
}
const Configuration& Consumer::get_configuration() const {
return config_;
}
Message Consumer::poll() {
rd_kafka_message_t* message = rd_kafka_consumer_poll(get_handle(),
get_timeout().count());