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

◆ get()

template<typename OpClass >
std::shared_ptr< OpClass > MayaFlux::Yantra::OperationPool::get ( const std::string &  name)
inline

Get operation from pool with type safety.

Template Parameters
OpClassExpected operation class type
Parameters
nameName of the operation
Returns
Shared pointer to operation, or nullptr if not found/type mismatch

Definition at line 138 of file OperationPool.hpp.

139 {
140 std::shared_lock lock(m_mutex);
141
142 auto it = m_operations.find(name);
143 if (it == m_operations.end()) {
144 return nullptr;
145 }
146
147 auto info_it = m_info.find(name);
148 if (info_it != m_info.end()) {
149 if (info_it->second.type != std::type_index(typeid(OpClass))) {
150 return nullptr;
151 }
152
153 {
154 lock.unlock();
155 std::unique_lock write_lock(m_mutex);
156 info_it->second.last_accessed = std::chrono::steady_clock::now();
157 info_it->second.access_count++;
158 }
159 }
160
161 return std::static_pointer_cast<OpClass>(it->second);
162 }
std::unordered_map< std::string, PooledOperationInfo > m_info
std::unordered_map< std::string, OperationPtr > m_operations

References m_info, m_mutex, and m_operations.