@@ -63,8 +63,9 @@ class queue_conn {
6363 shm::handle::clear_storage (name);
6464 }
6565
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_);
6869 }
6970
7071 circ::cc_t connected_id () const noexcept {
@@ -77,16 +78,16 @@ class queue_conn {
7778 -> std::tuple<bool, bool, decltype(std::declval<Elems>().cursor())> {
7879 if (elems == nullptr ) return {};
7980 // if it's already connected, just return
80- if (connected ()) return {connected (), false , 0 };
81+ if (connected (elems )) return {connected (elems ), false , 0 };
8182 connected_ = elems->connect_receiver ();
82- return {connected (), true , elems->cursor ()};
83+ return {connected (elems ), true , elems->cursor ()};
8384 }
8485
8586 template <typename Elems>
8687 bool disconnect (Elems* elems) noexcept {
8788 if (elems == nullptr ) return false ;
8889 // if it's already disconnected, just return false
89- if (!connected ()) return false ;
90+ if (!connected (elems )) return false ;
9091 elems->disconnect_receiver (std::exchange (connected_, 0 ));
9192 return true ;
9293 }
@@ -150,6 +151,10 @@ class queue_base : public queue_conn {
150151 elems_->disconnect_sender ();
151152 }
152153
154+ bool connected () const noexcept {
155+ return base_t::connected (elems_);
156+ }
157+
153158 bool connect () noexcept {
154159 auto tp = base_t::connect (elems_);
155160 if (std::get<0 >(tp) && std::get<1 >(tp)) {
0 commit comments