MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ set()

template<typename OpClass >
void MayaFlux::Yantra::OperationPool::set ( const std::string &  name,
std::shared_ptr< OpClass >  op 
)
inline

Add or replace operation in pool.

Template Parameters
OpClassOperation class type
Parameters
nameName for the operation
opShared pointer to the operation

Definition at line 102 of file OperationPool.hpp.

103 {
104 if (!op) {
105 return;
106 }
107
108 std::unique_lock lock(m_mutex);
109
110 bool replacing = m_operations.contains(name);
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
124 if (replacing && m_on_replace_callback) {
125 m_on_replace_callback(name, info.type);
126 } else if (!replacing && m_on_add_callback) {
127 m_on_add_callback(name, info.type);
128 }
129 }
std::function< void(const std::string &, std::type_index)> m_on_replace_callback
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

References m_info, m_mutex, m_on_add_callback, m_on_replace_callback, and m_operations.