]> granicus.if.org Git - icinga2/commitdiff
Moved task stats to the CIB.
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 29 Jun 2012 10:18:50 +0000 (12:18 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 29 Jun 2012 10:18:50 +0000 (12:18 +0200)
Refactored CheckResult class into a message-based class.

components/compat/compatcomponent.cpp
icinga/checkresult.cpp
icinga/checkresult.h
icinga/checktask.cpp
icinga/checktask.h
icinga/cib.cpp
icinga/cib.h
jsonrpc/jsonrpcclient.cpp

index cb1328a79f54ee101bbf83797f4b15fb2d5df36a..4ac947d812f4b14b630857d3b4be3935f34f1b24 100644 (file)
@@ -174,7 +174,8 @@ void CompatComponent::StatusTimerHandler(void)
                 << "\t" << "check_host_freshness=0" << endl
                 << "\t" << "enable_flap_detection=1" << endl
                 << "\t" << "enable_failure_prediction=0" << endl
-                << "\t" << "active_scheduled_service_check_stats=" << CheckTask::GetTaskStatistics(60) << "," << CheckTask::GetTaskStatistics(5 * 60) << "," << CheckTask::GetTaskStatistics(15 * 60) << endl
+                << "\t" << "active_scheduled_service_check_stats=" << CIB::GetTaskStatistics(60) << "," << CIB::GetTaskStatistics(5 * 60) << "," << CIB::GetTaskStatistics(15 * 60) << endl
+                << "\t" << "}" << endl
                 << endl;
 
        ofstream objectfp;
index 30e866446d5c41158f9bbc450c1d134f4ac87bf6..dd365687a0c4879422b62eb501d99c474a188804 100644 (file)
@@ -2,99 +2,86 @@
 
 using namespace icinga;
 
-CheckResult::CheckResult(void)
-       : m_Data(boost::make_shared<Dictionary>())
-{ }
-
-CheckResult::CheckResult(const Dictionary::Ptr& dictionary)
-       : m_Data(dictionary)
-{ }
-
-Dictionary::Ptr CheckResult::GetDictionary(void) const
-{
-       return m_Data;
-}
-
 void CheckResult::SetScheduleStart(time_t ts)
 {
-       m_Data->SetProperty("schedule_start", static_cast<long>(ts));
+       SetProperty("schedule_start", static_cast<long>(ts));
 }
 
 time_t CheckResult::GetScheduleStart(void) const
 {
        long value = 0;
-       m_Data->GetProperty("schedule_start", &value);
+       GetProperty("schedule_start", &value);
        return static_cast<time_t>(value);
 }
 
 void CheckResult::SetScheduleEnd(time_t ts)
 {
-       m_Data->SetProperty("schedule_end", static_cast<long>(ts));
+       SetProperty("schedule_end", static_cast<long>(ts));
 }
 
 time_t CheckResult::GetScheduleEnd(void) const
 {
        long value = 0;
-       m_Data->GetProperty("schedule_end", &value);
+       GetProperty("schedule_end", &value);
        return static_cast<time_t>(value);
 }
 
 void CheckResult::SetExecutionStart(time_t ts)
 {
-       m_Data->SetProperty("execution_start", static_cast<long>(ts));
+       SetProperty("execution_start", static_cast<long>(ts));
 }
 
 time_t CheckResult::GetExecutionStart(void) const
 {
        long value = 0;
-       m_Data->GetProperty("execution_start", &value);
+       GetProperty("execution_start", &value);
        return static_cast<time_t>(value);
 }
 
 void CheckResult::SetExecutionEnd(time_t ts)
 {
-       m_Data->SetProperty("execution_end", static_cast<long>(ts));
+       SetProperty("execution_end", static_cast<long>(ts));
 }
 
 time_t CheckResult::GetExecutionEnd(void) const
 {
        long value = 0;
-       m_Data->GetProperty("execution_end", &value);
+       GetProperty("execution_end", &value);
        return value;
 }
 
 void CheckResult::SetState(ServiceState state)
 {
-       m_Data->SetProperty("state", static_cast<long>(state));
+       SetProperty("state", static_cast<long>(state));
 }
 
 ServiceState CheckResult::GetState(void) const
 {
        long value = StateUnknown;
-       m_Data->GetProperty("state", &value);
+       GetProperty("state", &value);
        return static_cast<ServiceState>(value);
 }
 
 void CheckResult::SetOutput(string output)
 {
-       m_Data->SetProperty("output", output);
+       SetProperty("output", output);
 }
 
 string CheckResult::GetOutput(void) const
 {
        string value;
-       m_Data->GetProperty("output", &value);
+       GetProperty("output", &value);
        return value;
 }
 
 void CheckResult::SetPerformanceData(const Dictionary::Ptr& pd)
 {
-       m_Data->SetProperty("performance_data", pd);
+       SetProperty("performance_data", pd);
 }
 
 Dictionary::Ptr CheckResult::GetPerformanceData(void) const
 {
        Dictionary::Ptr value;
-       m_Data->GetProperty("performance_data", &value);
+       GetProperty("performance_data", &value);
        return value;
 }
index 7093a497a7f1cf8b83d2ea2f6f647b9f669579e0..049e01cdf136d641b626828f2c308f6335d3173a 100644 (file)
@@ -4,13 +4,11 @@
 namespace icinga
 {
 
-struct CheckResult
+class CheckResult : public MessagePart
 {
 public:
-       CheckResult(void);
-       CheckResult(const Dictionary::Ptr& dictionary);
-
-       Dictionary::Ptr GetDictionary(void) const;
+       CheckResult(void) : MessagePart() { }
+       CheckResult(const MessagePart& message) : MessagePart(message) { }
 
        void SetScheduleStart(time_t ts);
        time_t GetScheduleStart(void) const;
@@ -32,9 +30,6 @@ public:
 
        void SetPerformanceData(const Dictionary::Ptr& pd);
        Dictionary::Ptr GetPerformanceData(void) const;
-
-private:
-       Dictionary::Ptr m_Data;
 };
 
 }
index be78472ac011219c86734cb027e3edfd04c96948..1799b049024ec8630e3d0491962a1db83d0db120 100644 (file)
@@ -5,7 +5,6 @@ using namespace icinga;
 map<string, CheckTaskType> CheckTask::m_Types;
 vector<CheckTask::Ptr> CheckTask::m_FinishedTasks;
 mutex CheckTask::m_FinishedTasksMutex;
-Ringbuffer CheckTask::m_TaskStatistics(15 * 60);
 
 CheckTask::CheckTask(const Service& service)
        : m_Service(service)
@@ -68,11 +67,5 @@ void CheckTask::FinishTask(const CheckTask::Ptr& task)
 {
        mutex::scoped_lock lock(m_FinishedTasksMutex);
        m_FinishedTasks.push_back(task);
-       m_TaskStatistics.InsertValue(task->GetResult().GetScheduleEnd(), 1);
 }
 
-int CheckTask::GetTaskStatistics(time_t timespan)
-{
-       mutex::scoped_lock lock(m_FinishedTasksMutex);
-       return m_TaskStatistics.GetValues(timespan);
-}
index e3a6799a8b381f78fa16170cb4c68960e4914f30..c05d3bdc8b7593b00803531953aecce7dbb823b9 100644 (file)
@@ -29,8 +29,6 @@ public:
        static void FinishTask(const CheckTask::Ptr& task);
        static vector<CheckTask::Ptr> GetFinishedTasks(void);
 
-       static int GetTaskStatistics(time_t timespan);
-
 protected:
        CheckTask(const Service& service);
 
@@ -42,7 +40,6 @@ private:
 
        static vector<CheckTask::Ptr> m_FinishedTasks;
        static mutex m_FinishedTasksMutex;
-       static Ringbuffer m_TaskStatistics;
 };
 
 struct CheckTaskType
index 52fb845c29fa1f4f8e3572cba649a4b7a0d82145..8c2084234e7b649b18198af7e5df7bba81003cfb 100644 (file)
@@ -4,6 +4,7 @@ using namespace icinga;
 
 int CIB::m_Types;
 VirtualEndpoint::Ptr CIB::m_Endpoint;
+Ringbuffer CIB::m_TaskStatistics(15 * 60);
 
 void CIB::RequireInformation(InformationType types)
 {
@@ -63,5 +64,13 @@ void CIB::ServiceStatusRequestHandler(const Endpoint::Ptr& sender, const Request
        Dictionary::Ptr cr;
        if (params.GetProperty("result", &cr))
                service.SetLastCheckResult(cr);
+
+       time_t now;
+       time(&now);
+       m_TaskStatistics.InsertValue(now, 1);
 }
 
+int CIB::GetTaskStatistics(long timespan)
+{
+       return m_TaskStatistics.GetValues(timespan);
+}
index ab8389ac7bff5f0e331319e6a0376ea87c3b4312..c01a3f389ea550ef9f859e8b4c4dad26ec2cf73a 100644 (file)
@@ -18,10 +18,14 @@ public:
 
        static void Start(void);
 
+       static int GetTaskStatistics(long timespan);
+
 private:
        static int m_Types;
        static VirtualEndpoint::Ptr m_Endpoint;
 
+       static Ringbuffer m_TaskStatistics;
+
        static void ServiceStatusRequestHandler(const Endpoint::Ptr& sender, const RequestMessage& request);
 };
 
index 6f6ab2d3bdde65014045578f07aab4103732e5d9..091bc884a268e447a27ea0864b9e49eda6f48d99 100644 (file)
@@ -51,26 +51,21 @@ void JsonRpcClient::SendMessage(const MessagePart& message)
 void JsonRpcClient::DataAvailableHandler(void)
 {
        for (;;) {
-               try {
-                       string jsonString;
-                       MessagePart message;
-
-                       {
-                               mutex::scoped_lock lock(GetMutex());
+               string jsonString;
+               MessagePart message;
 
-                               if (!Netstring::ReadStringFromFIFO(GetRecvQueue(), &jsonString))
-                                       return;
-                       }
+               {
+                       mutex::scoped_lock lock(GetMutex());
 
-                       std::cerr << jsonString << std::endl;
+                       if (!Netstring::ReadStringFromFIFO(GetRecvQueue(), &jsonString))
+                               return;
+               }
 
+               try {
                        message = MessagePart(jsonString);
                        OnNewMessage(GetSelf(), message);
                } catch (const std::exception& ex) {
                        Application::Log(LogCritical, "jsonrpc", "Exception while processing message from JSON-RPC client: " + string(ex.what()));
-                       Close();
-
-                       return;
                }
        }
 }