Go to the documentation of this file.
22 #ifndef PROCESS_LAUNCHER_MANAGER_H
23 #define PROCESS_LAUNCHER_MANAGER_H
35 template<
class ...PROCESS_LAUNCHERS>
37 :
public PtrTemplates<ProcessLauncherManager<PROCESS_LAUNCHERS...> >
65 const auto launcherIterator = this->_processLaunchers.find(launcherType);
66 if(launcherIterator == this->_processLaunchers.end())
69 return launcherIterator->second->createLauncher(_logFD);
73 { this->_processLaunchers.emplace(launcher->launcherName(), std::move(launcher)); }
80 std::map<std::string, ProcessLauncherInterface::unique_ptr> _processLaunchers;
92 template<
class PROCESS_LAUNCHER,
class ...REST>
93 void registerProcessLauncher()
95 static_assert(std::is_base_of_v<ProcessLauncherInterface, PROCESS_LAUNCHER> && std::is_convertible_v<const volatile PROCESS_LAUNCHER*, const volatile ProcessLauncherInterface*>,
"Parameter PROCESS_LAUNCHER must derive from ProcessLauncherInterface");
100 this->registerProcessLauncher(std::move(launcher));
102 if constexpr (
sizeof... (REST) > 0)
103 { this->registerProcessLauncher<REST...>(); }
116 #endif // PROCESS_LAUNCHER_MANAGER_H
Class to manage process managers.
Definition: process_launcher_manager.h:36
ProcessLauncherManager(int logFD=-1)
Constructor. Registers all Process Launchers for further use.
Definition: process_launcher_manager.h:43
std::unique_ptr< ProcessLauncherInterface > unique_ptr
Definition: ptr_templates.h:34
~ProcessLauncherManager()=default
std::shared_ptr< const ProcessLauncherManager< PROCESS_LAUNCHERS... > > const_shared_ptr
Definition: ptr_templates.h:32
void registerProcessLauncher(ProcessLauncherInterface::unique_ptr &&launcher)
Definition: process_launcher_manager.h:72
ProcessLauncherInterface::unique_ptr createProcessLauncher(const std::string &launcherType) const
Create a new process launcher.
Definition: process_launcher_manager.h:60
Definition: ptr_templates.h:28
MainProcessLauncherManager::const_shared_ptr MainProcessLauncherManagerConstSharedPtr
Definition: process_launcher_manager.h:113
static EXCEPTION logCreate(LOG_EXCEPTION_T &exception, const std::string &msg, NRPLogger::spdlog_out_fcn_t spdlogCall=NRPLogger::critical)
Definition: nrp_exceptions.h:73
ProcessLauncherManager & operator=(ProcessLauncherManager &&)=delete
MainProcessLauncherManager::shared_ptr MainProcessLauncherManagerSharedPtr
Definition: process_launcher_manager.h:112
std::shared_ptr< ProcessLauncherManager< PROCESS_LAUNCHERS... > > shared_ptr
Definition: ptr_templates.h:31
#define NRP_LOGGER_TRACE(...)
trace log macro. It is voided by defining \PRODUCTION_RELEASE
Definition: nrp_logger.h:39