From 0b7931bfb8654ad3e5976e1608fb503531750f8b Mon Sep 17 00:00:00 2001 From: accelerated <> Date: Sun, 2 Dec 2018 14:42:02 -0500 Subject: [PATCH] Added Buffer::Buffer(iter, iter) constructor overload --- include/cppkafka/buffer.h | 5 +++++ include/cppkafka/header_list.h | 3 +-- tests/buffer_test.cpp | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/cppkafka/buffer.h b/include/cppkafka/buffer.h index c1bb519..361e130 100644 --- a/include/cppkafka/buffer.h +++ b/include/cppkafka/buffer.h @@ -81,6 +81,11 @@ public: throw Exception("Invalid buffer configuration"); } } + + template + Buffer(const Iter first, Iter last) + : Buffer(&*first, std::distance(first, last)) { + } /** * Constructs a buffer from a vector diff --git a/include/cppkafka/header_list.h b/include/cppkafka/header_list.h index 1d3b3b0..20e60a8 100644 --- a/include/cppkafka/header_list.h +++ b/include/cppkafka/header_list.h @@ -260,8 +260,7 @@ HeaderType HeaderList::at(size_t index) const { if (error != RD_KAFKA_RESP_ERR_NO_ERROR) { throw Exception(error.to_string()); } - //Use 'Buffer' to implicitly convert to 'BufferType' - return HeaderType(name, Buffer(value, size)); + return HeaderType(name, BufferType(value, value + size)); } template diff --git a/tests/buffer_test.cpp b/tests/buffer_test.cpp index 6659d3b..126f524 100644 --- a/tests/buffer_test.cpp +++ b/tests/buffer_test.cpp @@ -39,7 +39,11 @@ TEST_CASE("construction", "[buffer]") { const string str_data = "Hello world!"; const vector data(str_data.begin(), str_data.end()); const Buffer buffer(data); + const Buffer buffer2(data.begin(), data.end()); + const Buffer buffer3(str_data.data(), str_data.data() + str_data.size()); CHECK(str_data == buffer); + CHECK(buffer == buffer2); + CHECK(buffer == buffer3); }