Fixed end() iterator and also applied default copy-constructor instead of passing null handle in BasicMessageBuilder

This commit is contained in:
accelerated
2018-12-05 12:15:25 -05:00
parent 93e066a1c1
commit fe0c7e7dd5
3 changed files with 6 additions and 9 deletions

View File

@@ -279,16 +279,13 @@ bool HeaderList<HeaderType>::empty() const {
template <typename HeaderType>
typename HeaderList<HeaderType>::Iterator
HeaderList<HeaderType>::begin() const {
if (empty()) {
return end();
}
return Iterator(make_non_owning(handle_.get()), 0);
return empty() ? end() : Iterator(make_non_owning(handle_.get()), 0);
}
template <typename HeaderType>
typename HeaderList<HeaderType>::Iterator
HeaderList<HeaderType>::end() const {
return Iterator(make_non_owning(handle_.get()), size());
return Iterator(empty() ? HeaderList<HeaderType>() : make_non_owning(handle_.get()), size());
}
template <typename HeaderType>

View File

@@ -154,7 +154,7 @@ private:
HeaderIterator(HeaderListType headers,
size_t index)
: header_list_(std::move(headers)),
header_(index == header_list_.size() ? HeaderType() : header_list_.at(index)),
header_(header_list_.empty() ? HeaderType() : header_list_.at(index)),
index_(index) {
}

View File

@@ -245,7 +245,7 @@ BasicMessageBuilder<T, C>::BasicMessageBuilder(const Message& message)
key_(Buffer(message.get_key().get_data(), message.get_key().get_size())),
#if (RD_KAFKA_VERSION >= RD_KAFKA_HEADERS_SUPPORT_VERSION)
header_list_(message.get_header_list() ?
rd_kafka_headers_copy(message.get_header_list().get_handle()) : nullptr), //copy headers
HeaderListType(rd_kafka_headers_copy(message.get_header_list().get_handle())) : HeaderListType()), //copy headers
#endif
payload_(Buffer(message.get_payload().get_data(), message.get_payload().get_size())),
timestamp_(message.get_timestamp() ? message.get_timestamp().get().get_timestamp() :
@@ -262,7 +262,7 @@ BasicMessageBuilder<T, C>::BasicMessageBuilder(const BasicMessageBuilder<U, V>&
partition_(rhs.partition()),
#if (RD_KAFKA_VERSION >= RD_KAFKA_HEADERS_SUPPORT_VERSION)
header_list_(rhs.header_list() ?
rd_kafka_headers_copy(rhs.header_list().get_handle()) : nullptr), //copy headers
HeaderListType(rd_kafka_headers_copy(rhs.header_list().get_handle())) : HeaderListType()), //copy headers
#endif
timestamp_(rhs.timestamp()),
user_data_(rhs.user_data()),
@@ -278,7 +278,7 @@ BasicMessageBuilder<T, C>::BasicMessageBuilder(BasicMessageBuilder<U, V>&& rhs)
partition_(rhs.partition()),
#if (RD_KAFKA_VERSION >= RD_KAFKA_HEADERS_SUPPORT_VERSION)
header_list_(rhs.header_list() ?
rhs.header_list().release_handle() : nullptr), //assume header ownership
HeaderListType(rhs.header_list().release_handle()) : HeaderListType()), //assume header ownership
#endif
timestamp_(rhs.timestamp()),
user_data_(rhs.user_data()),