37
37
#include < unordered_set>
38
38
#include < unordered_map>
39
39
#include < map>
40
- #include < boost/thread/mutex.hpp>
41
- #include < boost/thread/shared_mutex.hpp>
40
+ #include < mutex>
42
41
#include < atomic>
43
42
#include < boost/optional.hpp>
44
43
#include " ../producer.h"
@@ -190,8 +189,7 @@ class CPPKAFKA_API BufferedProducer {
190
189
191
190
Producer producer_;
192
191
QueueType messages_;
193
- mutable boost::mutex exclusive_access_;
194
- mutable boost::shared_mutex shared_access_;
192
+ mutable std::mutex mutex_;
195
193
ProduceFailureCallback produce_failure_callback_;
196
194
std::atomic_ulong expected_acks_{0 };
197
195
std::atomic_ullong total_messages_acked_{0 };
@@ -221,14 +219,14 @@ void BufferedProducer<BufferType>::produce(const MessageBuilder& builder) {
221
219
222
220
template <typename BufferType>
223
221
void BufferedProducer<BufferType>::flush() {
224
- {
225
- boost::shared_lock<boost::shared_mutex> grant (shared_access_);
226
- size_t num_messages = messages_.size ();
227
- while (num_messages--) {
228
- produce_message (messages_.front ());
229
- boost::lock_guard<boost::mutex> require (exclusive_access_);
230
- messages_.pop ();
222
+ size_t num_messages = messages_.size ();
223
+ while (num_messages--) {
224
+ std::lock_guard<std::mutex> lock (mutex_);
225
+ if (messages_.empty ()) {
226
+ break ; // perhaps clear() was called
231
227
}
228
+ produce_message (messages_.front ());
229
+ messages_.pop ();
232
230
}
233
231
wait_for_acks ();
234
232
}
@@ -253,16 +251,15 @@ void BufferedProducer<BufferType>::wait_for_acks() {
253
251
254
252
template <typename BufferType>
255
253
void BufferedProducer<BufferType>::clear() {
256
- boost::unique_lock<boost::shared_mutex> restrict (shared_access_ );
254
+ std::lock_guard<std::mutex> lock (mutex_ );
257
255
QueueType tmp;
258
256
std::swap (tmp, messages_);
259
257
}
260
258
261
259
template <typename BufferType>
262
260
template <typename BuilderType>
263
261
void BufferedProducer<BufferType>::do_add_message(BuilderType&& builder) {
264
- boost::shared_lock<boost::shared_mutex> grant (shared_access_);
265
- boost::lock_guard<boost::mutex> require (exclusive_access_);
262
+ std::lock_guard<std::mutex> lock (mutex_);
266
263
messages_.push (std::move (builder));
267
264
}
268
265
0 commit comments