1 #ifndef SIGNALS_SHARED_CONNECTION_BLOCK_HPP
2 #define SIGNALS_SHARED_CONNECTION_BLOCK_HPP
5 #include "connection.hpp"
8 class Connection_impl_base;
22 bool initially_block =
true)
23 : connection_{conn.pimpl_}, blocking_{initially_block}
26 connection_.lock()->add_block();
32 : connection_{x.connection_}, blocking_{x.blocking_}
35 connection_.lock()->add_block();
58 connection_.lock()->remove_block();
66 if (!connection_.expired() && !blocking_) {
67 connection_.lock()->add_block();
75 return !connection_.expired() && blocking_;
82 std::weak_ptr<Connection_impl_base> connection_;
91 connection_ = x.connection_;
92 blocking_ = x.blocking_;
94 connection_.lock()->add_block();
99 auto active() ->
bool {
return !connection_.expired() && blocking_; }
103 #endif // SIGNALS_SHARED_CONNECTION_BLOCK_HPP
Shared_connection_block(Connection const &conn=Connection{}, bool initially_block=true)
Create a Shared_connection_block from a Connection and a boolean.
Definition: shared_connection_block.hpp:21
Blocks a Signal/Slot Connection.
Definition: shared_connection_block.hpp:13
Definition: connection.hpp:8
void block()
Reasserts a block on a Connection. No-op if currently blocking.
Definition: shared_connection_block.hpp:64
auto blocking() const -> bool
Definition: shared_connection_block.hpp:73
Shared_connection_block(Shared_connection_block const &x)
Creates a copy of x, increasing the block count on the.
Definition: shared_connection_block.hpp:31
auto connection() const -> Connection
Definition: shared_connection_block.hpp:79
void unblock()
Releases the Connection block. No-op if not currently blocking.
Definition: shared_connection_block.hpp:55
~Shared_connection_block()
Releases this block from the Connection.
Definition: shared_connection_block.hpp:52
auto operator=(Shared_connection_block const &x) -> Shared_connection_block &
Reset *this' Connection to point to x's Connection.
Definition: shared_connection_block.hpp:42
Represents the connection made when a Slot is connected to a Signal.
Definition: connection.hpp:13