mirror of
https://github.com/Telecominfraproject/wlan-cloud-lib-cppkafka.git
synced 2025-11-02 19:47:55 +00:00
Fixed Message::set_header_list as per review comments. Changed ClonablePtr to use clone() internally
This commit is contained in:
@@ -60,8 +60,7 @@ public:
|
||||
* \param rhs The pointer to be copied
|
||||
*/
|
||||
ClonablePtr(const ClonablePtr& rhs)
|
||||
: handle_(rhs.get_cloner() ? std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter()) :
|
||||
std::unique_ptr<T, Deleter>(rhs.get(), rhs.get_deleter())),
|
||||
: handle_(std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter())),
|
||||
cloner_(rhs.get_cloner()) {
|
||||
|
||||
}
|
||||
@@ -73,8 +72,7 @@ public:
|
||||
*/
|
||||
ClonablePtr& operator=(const ClonablePtr& rhs) {
|
||||
if (this != &rhs) {
|
||||
handle_ = rhs.get_cloner() ? std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter()) :
|
||||
std::unique_ptr<T, Deleter>(rhs.get(), rhs.get_deleter());
|
||||
handle_ = std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter());
|
||||
cloner_ = rhs.get_cloner();
|
||||
}
|
||||
return *this;
|
||||
@@ -130,7 +128,7 @@ private:
|
||||
* \brief Clones the internal pointer using the specified cloner function.
|
||||
*/
|
||||
T* clone() const {
|
||||
return cloner_ ? cloner_(handle_.get()) : handle_.get();
|
||||
return cloner_ ? cloner_(get()) : get();
|
||||
}
|
||||
|
||||
std::unique_ptr<T, Deleter> handle_;
|
||||
|
||||
@@ -159,11 +159,6 @@ public:
|
||||
*/
|
||||
explicit operator bool() const;
|
||||
|
||||
/**
|
||||
* \brief Indicates if this list owns the underlying handle or not.
|
||||
*/
|
||||
bool is_owning() const;
|
||||
|
||||
private:
|
||||
struct NonOwningTag { };
|
||||
static void dummy_deleter(rd_kafka_headers_t*) {}
|
||||
@@ -313,11 +308,6 @@ HeaderList<HeaderType>::operator bool() const {
|
||||
return static_cast<bool>(handle_);
|
||||
}
|
||||
|
||||
template <typename HeaderType>
|
||||
bool HeaderList<HeaderType>::is_owning() const {
|
||||
return handle_.get_deleter() != &dummy_deleter;
|
||||
}
|
||||
|
||||
} //namespace cppkafka
|
||||
|
||||
#endif //RD_KAFKA_HEADERS_SUPPORT_VERSION
|
||||
|
||||
@@ -129,23 +129,13 @@ public:
|
||||
#if (RD_KAFKA_VERSION >= RD_KAFKA_HEADERS_SUPPORT_VERSION)
|
||||
/**
|
||||
* \brief Sets the message's header list.
|
||||
* \note After this call, the Message will take ownership of the header list.
|
||||
* \note This calls rd_kafka_message_set_headers.
|
||||
*/
|
||||
void set_header_list(const HeaderListType& headers) {
|
||||
assert(handle_);
|
||||
assert(!headers.is_owning());
|
||||
rd_kafka_message_set_headers(handle_.get(), headers.get_handle());
|
||||
header_list_ = HeaderListType::make_non_owning(headers.get_handle());
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Sets the message's header list.
|
||||
* \note After this call, the Message will take ownership of the header list.
|
||||
*/
|
||||
void set_header_list(HeaderListType&& headers) {
|
||||
assert(handle_);
|
||||
rd_kafka_message_set_headers(handle_.get(), headers.get_handle());
|
||||
header_list_ = HeaderListType::make_non_owning(headers.release_handle());
|
||||
rd_kafka_headers_t* handle_copy = rd_kafka_headers_copy(headers.get_handle());
|
||||
rd_kafka_message_set_headers(handle_.get(), handle_copy);
|
||||
header_list_ = HeaderListType::make_non_owning(handle_copy);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user