|
MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
|
Thread-safe pool for managing named operation instances. More...
#include <OperationPool.hpp>
Collaboration diagram for MayaFlux::Yantra::OperationPool:Public Types | |
| using | NamePredicate = std::function< bool(const std::string &)> |
| using | OperationPtr = std::shared_ptr< void > |
| using | TypePredicate = std::function< bool(std::type_index)> |
Public Member Functions | |
| template<typename OpClass > | |
| bool | add (const std::string &name, std::shared_ptr< OpClass > op) |
| Add named operation to pool. | |
| template<typename OpClass > | |
| size_t | add_batch (const std::unordered_map< std::string, std::shared_ptr< OpClass > > &operations) |
| Add multiple operations at once. | |
| void | clear () |
| Clear all operations from the pool. | |
| bool | empty () const |
| Check if pool is empty. | |
| std::vector< std::string > | find_names (const NamePredicate &predicate) const |
| Get names matching a predicate. | |
| template<typename OpClass > | |
| std::shared_ptr< OpClass > | get (const std::string &name) |
| Get operation from pool with type safety. | |
| std::optional< PooledOperationInfo > | get_info (const std::string &name) const |
| Get metadata about an operation. | |
| std::unordered_map< std::string, std::any > | get_statistics () const |
| Get statistics about pool usage. | |
| std::optional< std::type_index > | get_type (const std::string &name) const |
| Get type of named operation. | |
| bool | has (const std::string &name) const |
| Check if operation exists. | |
| template<typename OpClass > | |
| bool | has_type () const |
| Check if any operations of a type exist. | |
| std::vector< std::string > | list_names () const |
| List all operation names. | |
| template<typename OpClass > | |
| std::vector< std::string > | list_names_by_type () const |
| Get names of operations matching a type. | |
| void | on_add (std::function< void(const std::string &, std::type_index)> callback) |
| Set callback for when operations are added. | |
| void | on_remove (std::function< void(const std::string &, std::type_index)> callback) |
| Set callback for when operations are removed. | |
| void | on_replace (std::function< void(const std::string &, std::type_index)> callback) |
| Set callback for when operations are replaced. | |
| OperationPool ()=default | |
| Default constructor. | |
| bool | remove (const std::string &name) |
| Remove operation from pool. | |
| template<typename OpClass > | |
| size_t | remove_by_type () |
| Remove all operations of a specific type. | |
| size_t | remove_if (const NamePredicate &predicate) |
| Remove operations matching a predicate. | |
| template<typename OpClass > | |
| void | set (const std::string &name, std::shared_ptr< OpClass > op) |
| Add or replace operation in pool. | |
| size_t | size () const |
| Get pool size. | |
| template<typename OpClass > | |
| std::optional< std::shared_ptr< OpClass > > | try_get (const std::string &name) |
| Try to get operation, return optional. | |
Private Attributes | |
| std::unordered_map< std::string, PooledOperationInfo > | m_info |
| std::shared_mutex | m_mutex |
| std::function< void(const std::string &, std::type_index)> | m_on_add_callback |
| std::function< void(const std::string &, std::type_index)> | m_on_remove_callback |
| std::function< void(const std::string &, std::type_index)> | m_on_replace_callback |
| std::unordered_map< std::string, OperationPtr > | m_operations |
Thread-safe pool for managing named operation instances.
The OperationPool provides efficient storage and retrieval of operation instances by name. It includes thread safety, access tracking, and advanced query capabilities.
Key Features:
Definition at line 46 of file OperationPool.hpp.