34 typedef std::function<void(
const std::function<
void()>&)>
Dispatcher;
45 return (d->disconnector ?
true :
false);
63 if (d && d->dispatcher_installer)
64 d->dispatcher_installer(dispatcher);
70 typedef std::function<void()> Disconnector;
71 typedef std::function<void(
const Dispatcher&)> DispatcherInstaller;
73 template<
typename ... Arguments>
friend class Signal;
75 inline Connection(
const Disconnector& disconnector,
76 const DispatcherInstaller& installer)
77 : d(std::make_shared<Private>(disconnector, installer))
81 inline bool operator<(
const Connection& rhs)
const
94 Private(
const Connection::Disconnector& disconnector,
95 const Connection::DispatcherInstaller& dispatcher_installer)
96 : disconnector(disconnector),
97 dispatcher_installer(dispatcher_installer)
103 std::lock_guard<std::mutex> lg(guard);
107 inline void reset_locked()
109 static const Connection::Disconnector empty_disconnector{};
110 static const Connection::DispatcherInstaller empty_dispatcher_installer{};
112 disconnector = empty_disconnector;
113 dispatcher_installer = empty_dispatcher_installer;
116 inline void disconnect()
118 static const Connection::Disconnector empty_disconnector{};
120 std::lock_guard<std::mutex> lg(guard);
129 Connection::Disconnector disconnector;
130 Connection::DispatcherInstaller dispatcher_installer;
135 std::shared_ptr<Private> d;