Add or replace operation in pool.
103 {
104 if (!op) {
105 return;
106 }
107
108 std::unique_lock lock(
m_mutex);
109
111
112 m_operations[name] = std::static_pointer_cast<void>(op);
113
114 auto& info =
m_info[name];
115 info.name = name;
116 info.type = std::type_index(typeid(OpClass));
117
118 if (!replacing) {
119 info.created_at = std::chrono::steady_clock::now();
120 info.access_count = 0;
121 }
122 info.last_accessed = std::chrono::steady_clock::now();
123
128 }
129 }
std::function< void(const std::string &, std::type_index)> m_on_replace_callback
std::shared_mutex m_mutex
std::function< void(const std::string &, std::type_index)> m_on_add_callback
std::unordered_map< std::string, PooledOperationInfo > m_info
std::unordered_map< std::string, OperationPtr > m_operations