@@ -63,8 +63,9 @@ class queue_conn {
63
63
shm::handle::clear_storage (name);
64
64
}
65
65
66
- bool connected () const noexcept {
67
- return connected_ != 0 ;
66
+ template <typename Elems>
67
+ bool connected (Elems* elems) const noexcept {
68
+ return elems->connected (connected_);
68
69
}
69
70
70
71
circ::cc_t connected_id () const noexcept {
@@ -77,16 +78,16 @@ class queue_conn {
77
78
-> std::tuple<bool, bool, decltype(std::declval<Elems>().cursor())> {
78
79
if (elems == nullptr ) return {};
79
80
// if it's already connected, just return
80
- if (connected ()) return {connected (), false , 0 };
81
+ if (connected (elems )) return {connected (elems ), false , 0 };
81
82
connected_ = elems->connect_receiver ();
82
- return {connected (), true , elems->cursor ()};
83
+ return {connected (elems ), true , elems->cursor ()};
83
84
}
84
85
85
86
template <typename Elems>
86
87
bool disconnect (Elems* elems) noexcept {
87
88
if (elems == nullptr ) return false ;
88
89
// if it's already disconnected, just return false
89
- if (!connected ()) return false ;
90
+ if (!connected (elems )) return false ;
90
91
elems->disconnect_receiver (std::exchange (connected_, 0 ));
91
92
return true ;
92
93
}
@@ -150,6 +151,10 @@ class queue_base : public queue_conn {
150
151
elems_->disconnect_sender ();
151
152
}
152
153
154
+ bool connected () const noexcept {
155
+ return base_t::connected (elems_);
156
+ }
157
+
153
158
bool connect () noexcept {
154
159
auto tp = base_t::connect (elems_);
155
160
if (std::get<0 >(tp) && std::get<1 >(tp)) {
0 commit comments