#ifndef CPPKAFKA_TOPIC_CONFIGURATION_H #define CPPKAFKA_TOPIC_CONFIGURATION_H #include #include #include #include "clonable_ptr.h" #include "configuration_base.h" namespace cppkafka { class Topic; class Buffer; class TopicConfiguration : public ConfigurationBase { public: using PartitionerCallback = std::function; using ConfigurationBase::set; TopicConfiguration(); void set(const std::string& name, const std::string& value); void set_partitioner_callback(PartitionerCallback callback); void set_as_opaque(); const PartitionerCallback& get_partitioner_callback() const; rd_kafka_topic_conf_t* get_handle() const; std::string get(const std::string& name) const; private: using HandlePtr = ClonablePtr; TopicConfiguration(rd_kafka_topic_conf_t* ptr); static HandlePtr make_handle(rd_kafka_topic_conf_t* ptr); HandlePtr handle_; PartitionerCallback partitioner_callback_; }; } // cppkafka #endif // CPPKAFKA_TOPIC_CONFIGURATION_H