33
44#include < string>
55#include < queue>
6- #include < type_traits>
76#include < cstdint>
7+ #include < algorithm>
88#include < unordered_set>
99#include < unordered_map>
1010#include < map>
@@ -93,6 +93,11 @@ class BufferedProducer {
9393 */
9494 void wait_for_acks ();
9595
96+ /* *
97+ * Clears any buffered messages
98+ */
99+ void clear ();
100+
96101 /* *
97102 * Gets the Producer object
98103 */
@@ -119,8 +124,7 @@ class BufferedProducer {
119124 */
120125 void set_produce_failure_callback (ProduceFailureCallback callback);
121126private:
122- // Pick the most appropriate index type depending on the platform we're using
123- using IndexType = std::conditional<sizeof (void *) == 8 , uint64_t , uint32_t >::type;
127+ using QueueType = std::queue<Builder>;
124128
125129 template <typename BuilderType>
126130 void do_add_message (BuilderType&& builder);
@@ -129,7 +133,7 @@ class BufferedProducer {
129133 void on_delivery_report (const Message& message);
130134
131135 Producer producer_;
132- std::queue<Builder> messages_;
136+ QueueType messages_;
133137 ProduceFailureCallback produce_failure_callback_;
134138 size_t expected_acks_{0 };
135139 size_t messages_acked_{0 };
@@ -187,6 +191,12 @@ void BufferedProducer<BufferType>::wait_for_acks() {
187191 messages_acked_ = 0 ;
188192}
189193
194+ template <typename BufferType>
195+ void BufferedProducer<BufferType>::clear() {
196+ QueueType tmp;
197+ std::swap (tmp, messages_);
198+ }
199+
190200template <typename BufferType>
191201template <typename BuilderType>
192202void BufferedProducer<BufferType>::do_add_message(BuilderType&& builder) {
0 commit comments