26#include <tao/Strategies/advanced_resource.h>
27#include <tao/IORTable/IORTable.h>
36#ifdef ORB_IS_ORBEXPRESS
37#include <RTPortableServer.h>
40#include <coil/Timer.h>
41#include <coil/Signal.h>
374 using TaskId = coil::Timer<coil::PeriodicFunction>::TaskId;
405 std::chrono::nanoseconds period);
451 void invoke(std::function<
void(
void)> fn,
452 std::chrono::nanoseconds delay
453 = std::chrono::seconds::zero());
490 ReturnCode_t
load(
const std::string& fname,
const std::string& initfunc);
947 bool autoclean =
true);
953 bool autoclean =
true);
959 bool autoclean =
true);
965 bool autoclean =
true);
971 bool autoclean =
true);
1073#ifdef ORB_IS_OMNIORB
1074 PortableServer::POA_ptr theShortCutPOA();
1113#ifdef ORB_IS_OMNIORB
1114 PortableServer::POA_ptr getShortCutPOA();
1585 coil::Properties& comp_id,
1586 coil::Properties& comp_conf);
1629 coil::Properties& ec_conf);
1957 coil::Properties& prop);
1976 bool& ip, std::vector<int>& ip_list);
2032#ifdef ORB_IS_OMNIORB
2033 PortableServer::POA_var m_pShortCutPOA;
2225 : m_vendor(
""), m_category(
""), m_impleid(imple_id), m_version(
""), m_language(
"")
2229 : m_vendor(prop[
"vendor"]),
2230 m_category(prop[
"category"]),
2231 m_impleid(prop[
"implementation_id"]),
2232 m_version(prop[
"version"]),
2233 m_language(prop[
"language"])
2237 : m_vendor(factory->profile()[
"vendor"]),
2238 m_category(factory->profile()[
"category"]),
2239 m_impleid(factory->profile()[
"implementation_id"]),
2240 m_version(factory->profile()[
"version"]),
2241 m_language(factory->profile()[
"language"])
2248 if (m_impleid.empty())
return false;
2250 const coil::Properties& prop(factory->
profile());
2252 if (m_impleid != prop[
"implementation_id"])
2254 if (!m_vendor.empty() && m_vendor != prop[
"vendor"])
2256 if (!m_category.empty() && m_category != prop[
"category"])
2258 if (!m_version.empty() && m_version != prop[
"version"])
2260 if (!m_language.empty() && m_language != prop[
"language"])
2267 std::string m_vendor;
2268 std::string m_category;
2269 std::string m_impleid;
2270 std::string m_version;
2271 std::string m_language;
2276 coil::Properties& m_prop;
2284 if (m_prop[
"implementation_id"] != prop[
"implementation_id"])
2288 if (!m_prop[
"vendor"].empty() &&
2289 m_prop[
"vendor"] != prop[
"vendor"]) {
return false; }
2290 if (!m_prop[
"category"].empty() &&
2291 m_prop[
"category"] != prop[
"category"]) {
return false; }
2292 if (!m_prop[
"version"].empty() &&
2293 m_prop[
"version"] != prop[
"version"]) {
return false; }
2325 :
m_name(factory->name()) {}
2351 std::vector<ExecutionContextBase*>
m_ecs;
2358 modlist.emplace_back(f->
profile().getProperty(
"implementation_id"));
ExecutionContext Factory class.
RT-Component factory class.
component action listener class
RT component logger class.
ECFactoryBase abstract class.
Definition ECFactory.h:116
virtual const char * name()=0
Pure virtual function to get names of creation target ExecutionContext.
A base class for ExecutionContext.
Definition ExecutionContextBase.h:366
FactoryBase base class.
Definition Factory.h:138
virtual coil::Properties & profile()
Get the component profile.
Logger class.
Definition SystemLogger.h:101
Definition Manager.h:2222
FactoryPredicate(FactoryBase *factory)
Definition Manager.h:2236
FactoryPredicate(const char *imple_id)
Definition Manager.h:2224
bool operator()(FactoryBase *factory)
Definition Manager.h:2245
FactoryPredicate(const coil::Properties &prop)
Definition Manager.h:2228
Definition Manager.h:2275
bool operator()(coil::Properties &prop)
Definition Manager.h:2282
ModulePredicate(coil::Properties &prop)
Definition Manager.h:2278
Manager class.
Definition Manager.h:91
std::string formatString(const char *naming_format, coil::Properties &prop)
Construct registration information when registering to Naming server.
void setEndpointProperty(CORBA::Object_ptr objref)
Setting endpoint info from corba.endpoints .
static void removeTask(TaskId id)
Remove the task from the Manager timer.
Definition Manager.h:426
ReturnCode_t load(const std::string &fname, const std::string &initfunc)
[CORBA interface] Load module
void cleanupComponent(RTObject_impl *comp)
Unregister RT-Components.
static Manager * manager
The pointer to the Manager .
Definition Manager.h:1992
bool unregisterComponent(RTObject_impl *comp)
Unregister RT-Components.
bool initComposite()
PeriodicECSharedComposite initialization.
bool initExecContext()
ExecutionContextManager initialization.
bool initORB()
CORBA ORB initialization.
coil::Argv m_argv
The argument of ORB_init .
Definition Manager.h:2055
void createORBEndpoints(coil::vstring &endpoints)
Create Endpoints.
ECFactoryManager m_ecfactory
ExecutionContext Manager .
Definition Manager.h:2342
Manager()
Protected Constructor.
ModuleInitProc m_initProc
User's initialization function's pointer .
Definition Manager.h:2079
void addRtcLifecycleActionListener(RTM::RtcLifecycleActionListener *listener, bool autoclean=true)
std::vector< coil::Properties > getLoadableModules()
Get a list of loadable modules.
bool registerFactory(coil::Properties &profile, RtcNewFunc new_func, RtcDeleteFunc delete_func)
Register RT-Component Factory.
bool initLocalService()
LocalService initialization.
std::vector< coil::Properties > getLoadedModules()
Get a list of loaded modules.
Manager(const Manager &)=delete
CORBA::ORB_ptr theORB()
Get the pointer to ORB (ownership retained)
void shutdownComponents()
NamingManager finalization.
coil::Properties m_config
Managaer's configuration Properties .
Definition Manager.h:2088
void endpointPropertySwitch(const std::string &ipver, bool &ip, std::vector< int > &ip_list)
Getting option info from corba.endpoint_property .
RTM::ManagerServant * m_mgrservant
The pointer to the ManagerServant .
Definition Manager.h:1879
CORBA::ORB_var m_pORB
The pointer to the ORB .
Definition Manager.h:2022
PortableServer::POAManager_ptr thePOAManager()
Get POAManager that Manager has (ownership retained)
NamingManager * m_namingManager
The pointer to the NamingManager .
Definition Manager.h:2106
std::vector< std::filebuf * > m_logfiles
Files for log output .
Definition Manager.h:2190
bool procContextArgs(const char *ec_args, std::string &ec_id, coil::Properties &ec_conf)
Extracting ExecutionContext's name/properties from the given string.
NamingManager * getNaming()
Getting NamingManager.
ExecutionContextBase * createContext(const char *ec_args)
Create Context.
CORBA::ORB_ptr getORB()
Get the pointer to ORB (ownership duplicated)
static Manager & instance()
Get instance of the manager.
void deleteComponent(RTObject_impl *comp)
Unregister RT-Components that have been registered to Manager.
bool registerComponent(RTObject_impl *comp)
Register RT-Component directly without Factory.
void cleanupComponents()
This method deletes RT-Components.
std::string createORBOptions()
Create ORB command options.
static Manager * init(int argc, char **argv)
Initialize manager.
void createORBEndpointOption(std::string &opt, coil::vstring endpoints)
Create a command optional line of Endpoint of ORB.
bool initLogger()
System logger initialization.
coil::Timer< coil::DelayedFunction > m_invoker
Timer Object for delay call on the Manager thread .
Definition Manager.h:2115
static std::mutex mutex
The mutex of the pointer to the Manager .
Definition Manager.h:2001
void mainThread()
The main function of Manager main thread. .
Finalized m_finalized
Definition Manager.h:2369
bool initFactories()
Factories initialization.
std::thread m_threadOrb
ORB thread. .
Definition Manager.h:2133
int m_argvSize
The argument of ORB_init .
Definition Manager.h:2067
FactoryManager m_factory
ComponentManager .
Definition Manager.h:2315
void removeNamingActionListener(RTM::NamingActionListener *listener)
void connectDataPorts(PortService_ptr port, PortServiceList_var &target_ports)
coil::Timer< coil::PeriodicFunction >::TaskId TaskId
Definition Manager.h:374
void removeRtcLifecycleActionListener(RTM::RtcLifecycleActionListener *listener)
void setModuleInitProc(ModuleInitProc proc)
Set initial procedure.
void notifyFinalized(RTObject_impl *comp)
This method deletes RT-Components.
PortableServer::POA_var m_pPOA
The pointer to the POA .
Definition Manager.h:2031
void addManagerActionListener(RTM::ManagerActionListener *listener, bool autoclean=true)
PortableServer::POA_ptr getPOA()
Get a pointer to RootPOA held by Manager.
bool mergeProperty(coil::Properties &prop, const char *file_name)
Merge property information.
void addLocalServiceActionListener(RTM::LocalServiceActionListener *listener, bool autoclean=true)
bool registerECFactory(const char *name, ECNewFunc new_func, ECDeleteFunc delete_func)
Register ExecutionContext Factory.
bool activateManager()
Activate the Manager.
ComponentManager m_compManager
ComponentManager .
Definition Manager.h:2215
RTObject_impl * getComponent(const char *instance_name)
Get RT-Component's pointer.
void configureComponent(RTObject_impl *comp, const coil::Properties &prop)
Configure RT-Component.
Logger rtclog
Logger stream .
Definition Manager.h:2181
PortableServer::POAManager_ptr getPOAManager()
Get POAManager that Manager has (ownership duplicated)
void publishPorts(RTObject_impl *comp)
NamingManager & getNamingManager()
Getting NamingManager.
std::string & getLogLevel()
Get the log level of the configuration.
Definition Manager.h:260
void unload(const char *fname)
Unload module.
RTM::ManagerServant & getManagerServant()
Getting ManagerServant.
void runManager(bool no_block=false)
Run the Manager.
PortableServer::POA_ptr thePOA()
Get a pointer to RootPOA held by Manager.
void shutdown()
Shutdown Manager.
std::list< coil::SignalAction > m_signals
An array for signals management .
Definition Manager.h:2151
void initManager(int argc, char **argv)
Manager internal initialization.
bool initManagerServant()
ManagerServant initialization.
void shutdownORB()
ORB finalization.
static std::atomic_flag m_isRunning
A flag to stop the main thread. .
Definition Manager.h:2010
std::vector< ExecutionContextBase * > m_ecs
ExecutionContext list .
Definition Manager.h:2351
void initLogstreamOthers()
std::thread m_threadMain
Manager main thread. .
Definition Manager.h:2142
void invoke(std::function< void(void)> fn, std::chrono::nanoseconds delay=std::chrono::seconds::zero())
Run a function on the Manager main thread.
void shutdownManagerServant()
Manager Servant finalization.
bool m_needsTimer
A flag that Manager use Timer or not. .
Definition Manager.h:2160
void unloadAll()
Unload all modules.
void connectServicePorts(PortService_ptr port, PortServiceList_var &target_ports)
void initLogstreamPlugins()
PortServiceList * getPortsOnNameServers(const std::string &nsname, const std::string &kind)
std::vector< coil::Properties > getFactoryProfiles()
Get profiles of factories.
void removeModuleActionListener(RTM::ModuleActionListener *listener)
void shutdownNaming()
NamingManager finalization.
std::vector< std::string > getModulesFactories()
Get the list of all Factories.
PortableServer::POAManager_var m_pPOAManager
The pointer to the POAManager .
Definition Manager.h:2043
LogStreamBuf & getLogStreamBuf()
Get the log buffer.
Definition Manager.h:241
std::vector< RTObject_impl * > getComponents()
Get all RT-Components registered in the Manager.
bool initNaming()
NamingManager initialization.
void deleteComponent(const char *instance_name)
Unregister RT-Components that have been registered to Manager.
coil::Properties & getConfig()
Get the manager configuration.
Definition Manager.h:279
bool procComponentArgs(const char *comp_arg, coil::Properties &comp_id, coil::Properties &comp_conf)
Extracting component type/properties from the given string.
void removeLocalServiceActionListener(RTM::LocalServiceActionListener *listener)
void addModuleActionListener(RTM::ModuleActionListener *listener, bool autoclean=true)
static void terminate()
Terminate manager.
void subscribePorts(RTObject_impl *comp)
coil::Timer< coil::PeriodicFunction > m_scheduler
Timer Object for delay call on the Manager thread .
Definition Manager.h:2124
LogStreamBuf m_logStreamBuf
Logger buffer .
Definition Manager.h:2172
::RTM::ManagerActionListeners m_listeners
Definition Manager.h:2371
void removeManagerActionListener(RTM::ManagerActionListener *listener)
TaskId addTask(std::function< void(void)> fn, std::chrono::nanoseconds period)
Add a task to the Manager timer.
void shutdownLogger()
System Logger finalization.
void addNamingActionListener(RTM::NamingActionListener *listener, bool autoclean=true)
RTObject_impl * createComponent(const char *comp_args)
Create RT-Components.
ModuleManager * m_module
The pointer to the ModuleManager .
Definition Manager.h:2097
void join()
Wait for Manager's termination.
Manager & operator=(const Manager &)=delete
ModuleManager class.
Definition ModuleManager.h:72
NamingServer management class.
Definition NamingManager.h:626
RT-Component class.
Definition RTObject.h:93
LocalServiceActionListener class.
Definition ManagerActionListener.h:716
Definition ManagerActionListener.h:62
ManagerActionListeners class.
Definition ManagerActionListener.h:967
Manager CORBA class.
Definition ManagerServant.h:66
ModuleActionListener class.
Definition ManagerActionListener.h:193
NamingActionListener class.
Definition ManagerActionListener.h:558
RtcLifecycleActionListener class.
Definition ManagerActionListener.h:355
ExecutionContextBase *(*)() ECNewFunc
Definition ECFactory.h:29
void(*)(RTObject_impl *) RtcDeleteFunc
Definition Factory.h:34
void(*)(ExecutionContextBase *) ECDeleteFunc
Definition ECFactory.h:30
::coil::LogStreamBuffer LogStreamBuf
Definition SystemLogger.h:34
void(*)(Manager *) ModuleInitProc
Definition Manager.h:68
RTObject_impl *(*)(Manager *) RtcNewFunc
Definition Factory.h:33
RT-Middleware.
Definition FactoryInit.h:22
Definition DefaultPeriodicTask.h:24
Definition Manager.h:2322
ECFactoryPredicate(ECFactoryBase *factory)
Definition Manager.h:2324
bool operator()(ECFactoryBase *factory)
Definition Manager.h:2326
std::string m_name
Definition Manager.h:2330
ECFactoryPredicate(const char *name)
Definition Manager.h:2323
Definition Manager.h:2364
std::mutex mutex
Definition Manager.h:2366
std::vector< RTObject_impl * > comps
Definition Manager.h:2367
Definition Manager.h:2197
InstanceName(std::string name)
InstanceName(const char *name)
InstanceName(RTObject_impl *comp)
std::string m_name
Definition Manager.h:2202
bool operator()(RTObject_impl *comp)
Definition Manager.h:2355
void operator()(FactoryBase *f)
Definition Manager.h:2356
std::vector< std::string > modlist
Definition Manager.h:2360