Allow getting config options and add multiple overloads for set

This commit is contained in:
Matias Fontanini
2016-06-05 15:08:40 -07:00
parent efd2321828
commit 65a60f1690
11 changed files with 120 additions and 5 deletions

View File

@@ -1,10 +1,12 @@
#include "topic_configuration.h"
#include <vector>
#include <librdkafka/rdkafka.h>
#include "exceptions.h"
#include "topic.h"
#include "buffer.h"
using std::string;
using std::vector;
namespace cppkafka {
@@ -63,6 +65,17 @@ rd_kafka_topic_conf_t* TopicConfiguration::get_handle() const {
return handle_.get();
}
string TopicConfiguration::get(const string& name) const {
size_t size = 0;
auto result = rd_kafka_topic_conf_get(handle_.get(), name.data(), nullptr, &size);
if (result != RD_KAFKA_CONF_OK) {
throw ConfigOptionNotFound(name);
}
vector<char> buffer(size);
rd_kafka_topic_conf_get(handle_.get(), name.data(), buffer.data(), &size);
return string(buffer.data());
}
TopicConfiguration::HandlePtr TopicConfiguration::make_handle(rd_kafka_topic_conf_t* ptr) {
return HandlePtr(ptr, &rd_kafka_topic_conf_destroy, &rd_kafka_topic_conf_dup);
}