mirror of
				https://github.com/Telecominfraproject/wlan-cloud-lib-cppkafka.git
				synced 2025-11-03 20:18:06 +00:00 
			
		
		
		
	Make get_metadata(Topic) return only topic metadata
This commit is contained in:
		@@ -37,7 +37,6 @@
 | 
				
			|||||||
#include <mutex>
 | 
					#include <mutex>
 | 
				
			||||||
#include <tuple>
 | 
					#include <tuple>
 | 
				
			||||||
#include <librdkafka/rdkafka.h>
 | 
					#include <librdkafka/rdkafka.h>
 | 
				
			||||||
#include "metadata.h"
 | 
					 | 
				
			||||||
#include "topic_partition.h"
 | 
					#include "topic_partition.h"
 | 
				
			||||||
#include "topic_partition_list.h"
 | 
					#include "topic_partition_list.h"
 | 
				
			||||||
#include "topic_configuration.h"
 | 
					#include "topic_configuration.h"
 | 
				
			||||||
@@ -46,6 +45,8 @@
 | 
				
			|||||||
namespace cppkafka {
 | 
					namespace cppkafka {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Topic;
 | 
					class Topic;
 | 
				
			||||||
 | 
					class Metadata;
 | 
				
			||||||
 | 
					class TopicMetadata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Base class for kafka consumer/producer
 | 
					 * Base class for kafka consumer/producer
 | 
				
			||||||
@@ -137,7 +138,7 @@ public:
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * \param topic The topic to fetch information for
 | 
					     * \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
 | 
					     * Returns the kafka handle name
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,6 +89,11 @@ public:
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    std::string get_error_string() const;    
 | 
					    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
 | 
					     * Gets the topic that this message belongs to
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,6 @@ using std::string;
 | 
				
			|||||||
using std::map;
 | 
					using std::map;
 | 
				
			||||||
using std::move;
 | 
					using std::move;
 | 
				
			||||||
using std::vector;
 | 
					using std::vector;
 | 
				
			||||||
using std::unordered_set;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
using boost::optional;
 | 
					using boost::optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "kafka_handle_base.h"
 | 
					#include "kafka_handle_base.h"
 | 
				
			||||||
 | 
					#include "metadata.h"
 | 
				
			||||||
#include "exceptions.h"
 | 
					#include "exceptions.h"
 | 
				
			||||||
#include "topic.h"
 | 
					#include "topic.h"
 | 
				
			||||||
#include "topic_partition_list.h"
 | 
					#include "topic_partition_list.h"
 | 
				
			||||||
@@ -105,8 +106,13 @@ Metadata KafkaHandleBase::get_metadata() const {
 | 
				
			|||||||
    return get_metadata(nullptr);
 | 
					    return get_metadata(nullptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Metadata KafkaHandleBase::get_metadata(const Topic& topic) const {
 | 
					TopicMetadata KafkaHandleBase::get_metadata(const Topic& topic) const {
 | 
				
			||||||
    return get_metadata(topic.get_handle());
 | 
					    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 {
 | 
					string KafkaHandleBase::get_name() const {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,6 +75,10 @@ string Message::get_error_string() const {
 | 
				
			|||||||
    return rd_kafka_err2str(handle_->err);
 | 
					    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 {
 | 
					int Message::get_partition() const {
 | 
				
			||||||
    return handle_->partition;
 | 
					    return handle_->partition;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@
 | 
				
			|||||||
#include <unordered_set>
 | 
					#include <unordered_set>
 | 
				
			||||||
#include <gtest/gtest.h>
 | 
					#include <gtest/gtest.h>
 | 
				
			||||||
#include "cppkafka/producer.h"
 | 
					#include "cppkafka/producer.h"
 | 
				
			||||||
 | 
					#include "cppkafka/metadata.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using std::vector;
 | 
					using std::vector;
 | 
				
			||||||
using std::set;
 | 
					using std::set;
 | 
				
			||||||
@@ -93,5 +94,5 @@ TEST_F(KafkaHandleBaseTest, TopicsMetadata) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Now get the whole metadata only for this topic
 | 
					    // Now get the whole metadata only for this topic
 | 
				
			||||||
    Topic topic = producer.get_topic(KAFKA_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