From: Michael Friedrich Date: Mon, 30 Sep 2013 18:34:55 +0000 (+0200) Subject: CompatLogger: Add external commands. X-Git-Tag: v0.0.3~325 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7dae41ee986402c67c528724a20cd003a5a0173c;p=icinga2 CompatLogger: Add external commands. refs #4362 --- diff --git a/components/compat/compatlogger.cpp b/components/compat/compatlogger.cpp index 915d75ffa..396f20034 100644 --- a/components/compat/compatlogger.cpp +++ b/components/compat/compatlogger.cpp @@ -22,6 +22,7 @@ #include "icinga/checkcommand.h" #include "icinga/notification.h" #include "icinga/macroprocessor.h" +#include "icinga/externalcommandprocessor.h" #include "config/configcompilercontext.h" #include "base/dynamictype.h" #include "base/objectlock.h" @@ -56,6 +57,7 @@ void CompatLogger::Start(void) Service::OnFlappingChanged.connect(bind(&CompatLogger::FlappingHandler, this, _1, _2)); Service::OnDowntimeTriggered.connect(boost::bind(&CompatLogger::TriggerDowntimeHandler, this, _1, _2)); Service::OnDowntimeRemoved.connect(boost::bind(&CompatLogger::RemoveDowntimeHandler, this, _1, _2)); + ExternalCommandProcessor::OnNewExternalCommand.connect(bind(&CompatLogger::ExternalCommandHandler, this, _2, _3)); m_RotationTimer = boost::make_shared(); m_RotationTimer->OnTimerExpired.connect(boost::bind(&CompatLogger::RotationTimerHandler, this)); @@ -413,6 +415,21 @@ void CompatLogger::FlappingHandler(const Service::Ptr& service, FlappingState fl } + +void CompatLogger::ExternalCommandHandler(const String& command, const std::vector& arguments) +{ + std::ostringstream msgbuf; + msgbuf << "EXTERNAL COMMAND: " + << command << ";" + << boost::algorithm::join(arguments, ";") + << ""; + + { + ObjectLock oLock(this); + WriteLine(msgbuf.str()); + } +} + void CompatLogger::WriteLine(const String& line) { ASSERT(OwnsLock()); diff --git a/components/compat/compatlogger.h b/components/compat/compatlogger.h index aa8fad4c6..8b84ed390 100644 --- a/components/compat/compatlogger.h +++ b/components/compat/compatlogger.h @@ -67,6 +67,7 @@ private: void FlappingHandler(const Service::Ptr& service, FlappingState flapping_state); void TriggerDowntimeHandler(const Service::Ptr& service, const Dictionary::Ptr& downtime); void RemoveDowntimeHandler(const Service::Ptr& service, const Dictionary::Ptr& downtime); + void ExternalCommandHandler(const String& command, const std::vector& arguments); Timer::Ptr m_RotationTimer; void RotationTimerHandler(void);