add input.add_callback("key:...") support

This commit is contained in:
MihailRis
2024-12-25 14:08:22 +03:00
parent 5e76cdfadc
commit 96577ee041
4 changed files with 46 additions and 2 deletions
+17
View File
@@ -1,5 +1,6 @@
#pragma once
#include <mutex>
#include <memory>
#include <unordered_map>
#include <utility>
@@ -11,17 +12,33 @@ namespace util {
class RunnablesList {
int nextid = 1;
std::unordered_map<int, runnable> runnables;
std::mutex mutex;
public:
RunnablesList() = default;
RunnablesList(RunnablesList&& o) {
runnables = std::move(o.runnables);
nextid = o.nextid;
}
void operator=(RunnablesList&& o) {
runnables = std::move(o.runnables);
nextid = o.nextid;
}
observer_handler add(runnable callback) {
std::lock_guard lock(mutex);
int id = nextid++;
runnables[id] = std::move(callback);
return observer_handler(new int(id), [this](int* id) { //-V508
std::lock_guard lock(mutex);
runnables.erase(*id);
delete id;
});
}
void notify() {
std::lock_guard lock(mutex);
for (auto& entry : runnables) {
entry.second();
}