34 std::atomic<bool> active{
true };
36 std::map<QemuObject*, std::unique_ptr<Entry>> m_cbs;
41 auto entry = std::make_unique<Entry>();
42 entry->cb = std::move(cb);
43 entry->active.store(
true, std::memory_order_release);
44 m_cbs[
obj.get_qemu_obj()] = std::move(entry);
49 auto it = m_cbs.find(
obj.get_qemu_obj());
50 if (
it != m_cbs.end() &&
it->second) {
51 it->second->active.store(
false, std::memory_order_release);
55 template <
typename...
Args>
58 auto it = m_cbs.find(
obj);
59 if (
it == m_cbs.end() || !
it->second) {
63 if (
it->second->active.load(std::memory_order_acquire)) {
64 it->second->cb(args...);