NRP Core  1.4.1
functional_node_factory_manager.h
Go to the documentation of this file.
1 /* * NRP Core - Backend infrastructure to synchronize simulations
2  *
3  * Copyright 2020-2023 NRP Team
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * This project has received funding from the European Union’s Horizon 2020
18  * Framework Programme for Research and Innovation under the Specific Grant
19  * Agreement No. 945539 (Human Brain Project SGA3).
20  */
21 
22 #ifndef FUNCTIONAL_NODE_FACTORY_MANAGER_H
23 #define FUNCTIONAL_NODE_FACTORY_MANAGER_H
24 
26 
28 
36 {
37 public:
38 
39  // Delete move and copy operators. This ensures this class is a singleton
42 
45 
50 
54  static void resetInstance();
55 
60  void loadFNFactoryPlugin(const std::string &pluginLibFile);
61 
69  FunctionalNodeBase* createFunctionalNode(const std::string& functionName, const std::string &nodeName,
71 
72 
73 private:
74 
75  FunctionalNodeFactoryManager() = default;
76 
77  static std::unique_ptr<FunctionalNodeFactoryManager> _instance;
78 
79 };
80 
81 #endif // FUNCTIONAL_NODE_FACTORY_MANAGER_H
FunctionalNodeFactoryManager::resetInstance
static void resetInstance()
Reset singleton instance.
Definition: functional_node_factory_manager.cpp:82
FunctionalNodePolicies::ExecutionPolicy
ExecutionPolicy
Possible execution policies for this node.
Definition: computational_node_policies.h:41
FunctionalNodeFactoryManager
Singleton class which loads Functional Node factory plugins and instantiates Functional Nodes using t...
Definition: functional_node_factory_manager.h:35
FunctionalNodeBase
Non-abstract, non-templated base class for the FunctionalNode class.
Definition: functional_node.h:42
functional_node.h
FunctionalNodePolicies::ON_NEW_INPUT
@ ON_NEW_INPUT
Definition: computational_node_policies.h:43
FunctionalNodeFactoryManager::getInstance
static FunctionalNodeFactoryManager & getInstance()
Get singleton instance of FunctionalNodeFactoryManager.
Definition: functional_node_factory_manager.cpp:74
plugin_manager.h
PluginManager
Definition: plugin_manager.h:29
FunctionalNodeFactoryManager::operator=
FunctionalNodeFactoryManager & operator=(const FunctionalNodeFactoryManager &)=delete
FunctionalNodeFactoryManager::createFunctionalNode
FunctionalNodeBase * createFunctionalNode(const std::string &functionName, const std::string &nodeName, FunctionalNodePolicies::ExecutionPolicy policy=FunctionalNodePolicies::ExecutionPolicy::ON_NEW_INPUT)
Attempts to instantiate a Functional Node from the requested functionName using all loaded plugins.
Definition: functional_node_factory_manager.cpp:55
FunctionalNodeFactoryManager::loadFNFactoryPlugin
void loadFNFactoryPlugin(const std::string &pluginLibFile)
Load a Functional Node factory plugin.
Definition: functional_node_factory_manager.cpp:35