mirror of
https://github.com/Telecominfraproject/wlan-cloud-lib-cppkafka.git
synced 2025-11-01 11:07:56 +00:00
Make get_metadata(Topic) return only topic metadata
This commit is contained in:
@@ -37,7 +37,6 @@
|
||||
#include <mutex>
|
||||
#include <tuple>
|
||||
#include <librdkafka/rdkafka.h>
|
||||
#include "metadata.h"
|
||||
#include "topic_partition.h"
|
||||
#include "topic_partition_list.h"
|
||||
#include "topic_configuration.h"
|
||||
@@ -46,6 +45,8 @@
|
||||
namespace cppkafka {
|
||||
|
||||
class Topic;
|
||||
class Metadata;
|
||||
class TopicMetadata;
|
||||
|
||||
/**
|
||||
* Base class for kafka consumer/producer
|
||||
@@ -137,7 +138,7 @@ public:
|
||||
*
|
||||
* \param topic The topic to fetch information for
|
||||
*/
|
||||
Metadata get_metadata(const Topic& topic) const;
|
||||
TopicMetadata get_metadata(const Topic& topic) const;
|
||||
|
||||
/**
|
||||
* Returns the kafka handle name
|
||||
|
||||
@@ -89,6 +89,11 @@ public:
|
||||
*/
|
||||
std::string get_error_string() const;
|
||||
|
||||
/**
|
||||
* Utility function to check for get_error() == RD_KAFKA_RESP_ERR__PARTITION_EOF
|
||||
*/
|
||||
bool is_eof() const;
|
||||
|
||||
/**
|
||||
* Gets the topic that this message belongs to
|
||||
*/
|
||||
|
||||
@@ -39,7 +39,6 @@ using std::string;
|
||||
using std::map;
|
||||
using std::move;
|
||||
using std::vector;
|
||||
using std::unordered_set;
|
||||
|
||||
using boost::optional;
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
*/
|
||||
|
||||
#include "kafka_handle_base.h"
|
||||
#include "metadata.h"
|
||||
#include "exceptions.h"
|
||||
#include "topic.h"
|
||||
#include "topic_partition_list.h"
|
||||
@@ -105,8 +106,13 @@ Metadata KafkaHandleBase::get_metadata() const {
|
||||
return get_metadata(nullptr);
|
||||
}
|
||||
|
||||
Metadata KafkaHandleBase::get_metadata(const Topic& topic) const {
|
||||
return get_metadata(topic.get_handle());
|
||||
TopicMetadata KafkaHandleBase::get_metadata(const Topic& topic) const {
|
||||
Metadata md = get_metadata(topic.get_handle());
|
||||
auto topics = md.get_topics();
|
||||
if (topics.empty()) {
|
||||
throw Exception("Failed to find metadata for topic");
|
||||
}
|
||||
return topics.front();
|
||||
}
|
||||
|
||||
string KafkaHandleBase::get_name() const {
|
||||
|
||||
@@ -75,6 +75,10 @@ string Message::get_error_string() const {
|
||||
return rd_kafka_err2str(handle_->err);
|
||||
}
|
||||
|
||||
bool Message::is_eof() const {
|
||||
return get_error() == RD_KAFKA_RESP_ERR__PARTITION_EOF;
|
||||
}
|
||||
|
||||
int Message::get_partition() const {
|
||||
return handle_->partition;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include <unordered_set>
|
||||
#include <gtest/gtest.h>
|
||||
#include "cppkafka/producer.h"
|
||||
#include "cppkafka/metadata.h"
|
||||
|
||||
using std::vector;
|
||||
using std::set;
|
||||
@@ -93,5 +94,5 @@ TEST_F(KafkaHandleBaseTest, TopicsMetadata) {
|
||||
|
||||
// Now get the whole metadata only for this topic
|
||||
Topic topic = producer.get_topic(KAFKA_TOPIC);
|
||||
EXPECT_EQ(1, producer.get_metadata(topic).get_topics().size());
|
||||
EXPECT_EQ(KAFKA_TOPIC, producer.get_metadata(topic).get_topic());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user