@@ -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