File tree Expand file tree Collapse file tree 2 files changed +13
-4
lines changed Expand file tree Collapse file tree 2 files changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -34,15 +34,24 @@ void send_buffer::push_sample(const sample_p &s) {
3434void 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.
4346void 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.
Original file line number Diff line number Diff line change 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
1111namespace lsl {
1212
@@ -20,7 +20,7 @@ namespace lsl {
2020 * send_buffer.
2121 */
2222class 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
2525public:
2626 /* *
You can’t perform that action at this time.
0 commit comments