project(SystemdHealthMonitor)
-find_package(Threads)
-
include_directories(
include
${CMAKE_SOURCE_DIR}/LayerManagerClient/ilmClient/include
${LIBS}
LayerManagerUtils
systemd
+ rt
)
-add_library(${PROJECT_NAME} SHARED
+set(SRC_FILES
src/SystemdHealthMonitor.cpp
)
+if (WITH_STATIC_PLUGINS)
+
+ add_library(${PROJECT_NAME} STATIC ${SRC_FILES})
+ set (STATICALLY_LINKED_PLUGINS ${STATICALLY_LINKED_PLUGINS}
+ ${PROJECT_NAME} CACHE INTERNAL "list of static plugins")
+
+else(WITH_STATIC_PLUGINS)
+
+ add_library(${PROJECT_NAME} SHARED ${SRC_FILES})
+
+endif(WITH_STATIC_PLUGINS)
+
+
target_link_libraries(${PROJECT_NAME}
${LIBS}
)
add_dependencies(${PROJECT_NAME}
- LayerManagerService
LayerManagerUtils
)
install (TARGETS ${PROJECT_NAME}
- LIBRARY DESTINATION lib/layermanager/health)
+ LIBRARY DESTINATION lib/layermanager/health
+ ARCHIVE DESTINATION lib/layermanager/static
+)
#include "IHealthMonitor.h"
#include "ThreadBase.h"
+#include "PluginBase.h"
-class SystemdHealthMonitor : public IHealthMonitor, protected ThreadBase
+class SystemdHealthMonitor : public IHealthMonitor, protected ThreadBase, public PluginBase
{
public:
- SystemdHealthMonitor(ICommandExecutor* executor);
+ SystemdHealthMonitor(ICommandExecutor& executor, Configuration& config);
- // from IHealth
+ // from IHealthMonitor
virtual t_ilm_bool start();
virtual t_ilm_bool stop();
+ //from PluginBase
+ virtual t_ilm_const_string pluginGetName() const;
+
private:
void reportStartupComplete();
void reportProcessId();
#include <systemd/sd-daemon.h>
-SystemdHealthMonitor::SystemdHealthMonitor(ICommandExecutor* executor)
-: IHealthMonitor(executor)
+SystemdHealthMonitor::SystemdHealthMonitor(ICommandExecutor& executor, Configuration& config)
+: IHealthMonitor(executor, config)
+, PluginBase(executor, config, HealthMonitor_Api_v1)
, mIntervalInMs(-1)
{
char* envVar = getenv("WATCHDOG_USEC");
return result;
}
+t_ilm_const_string SystemdHealthMonitor::pluginGetName() const
+{
+ return "SystemdHealthMonitor";
+}
+
void SystemdHealthMonitor::reportStartupComplete()
{
LOG_INFO("SystemdHealthMonitor", "reporting startup complete");
t_ilm_bool SystemdHealthMonitor::threadMainLoop()
{
- if (watchdogEnabled() && mExecutor->getHealth())
+ if (watchdogEnabled() && PluginBase::mExecutor.getHealth())
{
signalWatchdog();
usleep(mIntervalInMs * 1000);
return ILM_TRUE;
}
-extern "C" IHealthMonitor* createSystemdHealthMonitor(ICommandExecutor* executor)
-{
- return new SystemdHealthMonitor(executor);
-}
-
-extern "C" void destroyGenericCommunicator(SystemdHealthMonitor* p)
-{
- delete p;
-}
+DECLARE_LAYERMANAGEMENT_PLUGIN(SystemdHealthMonitor)
\ No newline at end of file
class IHealthMonitor
{
public:
- IHealthMonitor(ICommandExecutor* executor);
- virtual ~IHealthMonitor() {};
+ IHealthMonitor(ICommandExecutor& executor, Configuration& config);
+ virtual ~IHealthMonitor();
virtual t_ilm_bool start() = 0;
virtual t_ilm_bool stop() = 0;
protected:
- ICommandExecutor* mExecutor;
+ ICommandExecutor& mExecutor;
+ Configuration& mConfiguration;
};
inline
-IHealthMonitor::IHealthMonitor(ICommandExecutor* executor)
+IHealthMonitor::IHealthMonitor(ICommandExecutor& executor, Configuration& config)
: mExecutor(executor)
+, mConfiguration(config)
{
}
-#endif // __IHEALTH_H__
\ No newline at end of file
+inline
+IHealthMonitor::~IHealthMonitor()
+{
+}
+
+#endif // __IHEALTH_H__