@@ -67,6 +67,11 @@ class queue_conn {
67
67
return connected_ != 0 ;
68
68
}
69
69
70
+ template <typename Elems>
71
+ bool connected (Elems* elems) noexcept {
72
+ return connected_ & elems->connections ();
73
+ }
74
+
70
75
circ::cc_t connected_id () const noexcept {
71
76
return connected_;
72
77
}
@@ -77,16 +82,16 @@ class queue_conn {
77
82
-> std::tuple<bool, bool, decltype(std::declval<Elems>().cursor())> {
78
83
if (elems == nullptr ) return {};
79
84
// if it's already connected, just return
80
- if (connected ()) return {connected (), false , 0 };
85
+ if (connected (elems )) return {connected (elems ), false , 0 };
81
86
connected_ = elems->connect_receiver ();
82
- return {connected (), true , elems->cursor ()};
87
+ return {connected (elems ), true , elems->cursor ()};
83
88
}
84
89
85
90
template <typename Elems>
86
91
bool disconnect (Elems* elems) noexcept {
87
92
if (elems == nullptr ) return false ;
88
93
// if it's already disconnected, just return false
89
- if (!connected ()) return false ;
94
+ if (!connected (elems )) return false ;
90
95
elems->disconnect_receiver (std::exchange (connected_, 0 ));
91
96
return true ;
92
97
}
0 commit comments