Skip to content

Commit fa14ddf

Browse files
tstennercboulay
authored andcommitted
Replace boost::flat_set with std::vector
1 parent 4f891d5 commit fa14ddf

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/send_buffer.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,24 @@ void send_buffer::push_sample(const sample_p &s) {
3434
void send_buffer::register_consumer(consumer_queue *q) {
3535
{
3636
std::lock_guard<std::mutex> lock(consumers_mut_);
37-
consumers_.insert(q);
37+
if (std::find(consumers_.begin(), consumers_.end(), q) != consumers_.end())
38+
LOG_F(WARNING, "Duplicate consumer queue in send buffer");
39+
else
40+
consumers_.push_back(q);
3841
}
3942
some_registered_.notify_all();
4043
}
4144

4245
/// Unregister a previously registered consumer.
4346
void send_buffer::unregister_consumer(consumer_queue *q) {
4447
std::lock_guard<std::mutex> lock(consumers_mut_);
45-
consumers_.erase(q);
48+
auto pos = std::find(consumers_.begin(), consumers_.end(), q);
49+
if (pos == consumers_.end()) LOG_F(ERROR, "Trying to remove consumer queue not in send buffer");
50+
51+
// Put the element to be removed at the end (if it isn't there already) and
52+
// remove the last element
53+
if (*pos != consumers_.back()) std::swap(*pos, consumers_.back());
54+
consumers_.pop_back();
4655
}
4756

4857
/// Check whether there currently are consumers.

src/send_buffer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
#include "common.h"
55
#include "forward.h"
6-
#include <boost/container/flat_set.hpp>
76
#include <condition_variable>
87
#include <memory>
98
#include <mutex>
9+
#include <vector>
1010

1111
namespace lsl {
1212

@@ -20,7 +20,7 @@ namespace lsl {
2020
* send_buffer.
2121
*/
2222
class send_buffer : public std::enable_shared_from_this<send_buffer> {
23-
using consumer_set = lslboost::container::flat_set<consumer_queue *>;
23+
using consumer_set = std::vector<class consumer_queue *>;
2424

2525
public:
2626
/**

0 commit comments

Comments
 (0)