00001
00019 #ifndef RTM_MANAGERACTIONLISTENER_H
00020 #define RTM_MANAGERACTIONLISTENER_H
00021
00022 #include <vector>
00023 #include <utility>
00024 #include <coil/Mutex.h>
00025 #include <coil/Guard.h>
00026 #include <coil/Properties.h>
00027 #include <coil/stringutil.h>
00028 #include <rtm/ListenerHolder.h>
00029
00030
00031 namespace RTC
00032 {
00033 class RTObject_impl;
00034 };
00035
00036 namespace RTM
00037 {
00038
00039 class LocalServiceBase;
00040
00041
00060 class ManagerActionListener
00061 {
00062 public:
00072 virtual ~ManagerActionListener();
00073
00083 virtual void preShutdown() = 0;
00084
00094 virtual void postShutdown() = 0;
00095
00105 virtual void preReinit() = 0;
00106
00116 virtual void postReinit() = 0;
00117 };
00118
00119
00127 class ManagerActionListenerHolder
00128 : public ::RTM::util::ListenerHolder<ManagerActionListener>
00129 {
00130 public:
00131 virtual ~ManagerActionListenerHolder();
00132
00142 virtual void preShutdown();
00143
00153 virtual void postShutdown();
00154
00164 virtual void preReinit();
00165
00175 virtual void postReinit();
00176 };
00177
00178
00179
00191 class ModuleActionListener
00192 {
00193 public:
00201 virtual ~ModuleActionListener();
00202
00212 virtual void preLoad(std::string& modname,
00213 std::string& funcname) = 0;
00214
00224 virtual void postLoad(std::string& modname,
00225 std::string& funcname) = 0;
00226
00236 virtual void preUnload(std::string& modname) = 0;
00237
00247 virtual void postUnload(std::string& modname) = 0;
00248 };
00249
00250
00262 class ModuleActionListenerHolder
00263 : public ::RTM::util::ListenerHolder<ModuleActionListener>
00264 {
00265 public:
00273 virtual ~ModuleActionListenerHolder();
00274
00284 virtual void preLoad(std::string& modname,
00285 std::string& funcname);
00286
00296 virtual void postLoad(std::string& modname,
00297 std::string& funcname);
00298
00308 virtual void preUnload(std::string& modname);
00309
00319 virtual void postUnload(std::string& modname);
00320 };
00321
00322
00323
00324
00353 class RtcLifecycleActionListener
00354 {
00355 public:
00363 virtual ~RtcLifecycleActionListener();
00364
00374 virtual void preCreate(std::string& args) = 0;
00375
00385 virtual void postCreate(RTC::RTObject_impl*) = 0;
00386
00396 virtual void preConfigure(coil::Properties& prop) = 0;
00397
00407 virtual void postConfigure(coil::Properties& prop) = 0;
00408
00418 virtual void preInitialize(void) = 0;
00419
00429 virtual void postInitialize(void) = 0;
00430 };
00431
00432
00447 class RtcLifecycleActionListenerHolder
00448 : public RTM::util::ListenerHolder<RtcLifecycleActionListener>
00449 {
00450 public:
00458 virtual ~RtcLifecycleActionListenerHolder();
00459
00460
00470 virtual void preCreate(std::string& args);
00471
00481 virtual void postCreate(RTC::RTObject_impl* rtobj);
00482
00492 virtual void preConfigure(coil::Properties& prop);
00493
00503 virtual void postConfigure(coil::Properties& prop);
00504
00514 virtual void preInitialize(void);
00515
00525 virtual void postInitialize(void);
00526 };
00527
00528
00529
00556 class NamingActionListener
00557 {
00558 public:
00566 virtual ~NamingActionListener();
00567
00577 virtual void preBind(RTC::RTObject_impl* rtobj,
00578 coil::vstring& name) = 0;
00588 virtual void postBind(RTC::RTObject_impl* rtobj,
00589 coil::vstring& name) = 0;
00590
00600 virtual void preUnbind(RTC::RTObject_impl* rtobj,
00601 coil::vstring& name) = 0;
00602
00612 virtual void postUnbind(RTC::RTObject_impl* rtobj,
00613 coil::vstring& name) = 0;
00614 };
00615
00616
00631 class NamingActionListenerHolder
00632 : public RTM::util::ListenerHolder<NamingActionListener>
00633 {
00634 public:
00642 virtual ~NamingActionListenerHolder();
00643
00653 virtual void preBind(RTC::RTObject_impl* rtobj,
00654 coil::vstring& name);
00664 virtual void postBind(RTC::RTObject_impl* rtobj,
00665 coil::vstring& name);
00666
00676 virtual void preUnbind(RTC::RTObject_impl* rtobj,
00677 coil::vstring& name);
00678
00688 virtual void postUnbind(RTC::RTObject_impl* rtobj,
00689 coil::vstring& name);
00690 };
00691
00692
00693
00714 class LocalServiceActionListener
00715 {
00716 public:
00724 virtual ~LocalServiceActionListener();
00725
00735 virtual void preServiceRegister(std::string service_name) = 0;
00736
00746 virtual void postServiceRegister(std::string service_name,
00747 RTM::LocalServiceBase* service) = 0;
00748
00758 virtual void preServiceInit(coil::Properties& prop,
00759 RTM::LocalServiceBase* service) = 0;
00760
00770 virtual void postServiceInit(coil::Properties& prop,
00771 RTM::LocalServiceBase* service) = 0;
00772
00782 virtual void preServiceReinit(coil::Properties& prop,
00783 RTM::LocalServiceBase* service) = 0;
00784
00794 virtual void postServiceReinit(coil::Properties& prop,
00795 RTM::LocalServiceBase* service) = 0;
00796
00806 virtual void postServiceFinalize(std::string service_name,
00807 RTM::LocalServiceBase* service) = 0;
00808
00818 virtual void preServiceFinalize(std::string service_name,
00819 RTM::LocalServiceBase* service) = 0;
00820 };
00821
00822
00843 class LocalServiceActionListenerHolder
00844 : public RTM::util::ListenerHolder<LocalServiceActionListener>
00845 {
00846 public:
00854 virtual ~LocalServiceActionListenerHolder();
00855
00856
00866 virtual void preServiceRegister(std::string service_name);
00867
00877 virtual void postServiceRegister(std::string service_name,
00878 RTM::LocalServiceBase* service);
00879
00889 virtual void preServiceInit(coil::Properties& prop,
00890 RTM::LocalServiceBase* service);
00900 virtual void postServiceInit(coil::Properties& prop,
00901 RTM::LocalServiceBase* service);
00902
00912 virtual void preServiceReinit(coil::Properties& prop,
00913 RTM::LocalServiceBase* service);
00923 virtual void postServiceReinit(coil::Properties& prop,
00924 RTM::LocalServiceBase* service);
00925
00935 virtual void postServiceFinalize(std::string service_name,
00936 RTM::LocalServiceBase* service);
00946 virtual void preServiceFinalize(std::string service_name,
00947 RTM::LocalServiceBase* service);
00948 };
00949
00950
00951
00965 class ManagerActionListeners
00966 {
00967 public:
00968 ManagerActionListenerHolder manager_;
00969 ModuleActionListenerHolder module_;
00970 RtcLifecycleActionListenerHolder rtclifecycle_;
00971 NamingActionListenerHolder naming_;
00972 LocalServiceActionListenerHolder localservice_;
00973 };
00974 };
00975
00976 #endif // RTC_MANAGERACTIONLISTENER_H