8 namespace KapMirror::Experimental {
9 template <
class Signature>
12 std::map<std::size_t, std::function<Signature>> handlers;
13 std::mutex handlersMutex;
20 template <
class... Args>
22 std::lock_guard<std::mutex> lock(handlersMutex);
23 for (
auto const& [hash, handler] : handlers) {
34 template <
typename Handler>
36 std::lock_guard<std::mutex> lock(handlersMutex);
37 std::size_t hash = getHash(hanlder);
38 handlers[hash] = std::forward<Handler>(hanlder);
45 template <
typename Handler>
47 std::lock_guard<std::mutex> lock(handlersMutex);
48 std::size_t hash = getHash(hanlder);
60 std::size_t getHash(
const std::function<Signature>& func) {
return (std::size_t)func.target_type().hash_code(); }