From 438d5c0f57dcda45930271b75434ed8d9d23200b Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 13 Nov 2013 09:41:06 +0100 Subject: [PATCH] Move EmptyTimePeriod and EvenMinutesTimePeriod to libmethods. Fixes #5032 --- lib/icinga/timeperiod.cpp | 26 ------------------ lib/icinga/timeperiod.h | 3 --- lib/methods/CMakeLists.txt | 1 + lib/methods/timeperiodtask.cpp | 49 ++++++++++++++++++++++++++++++++++ lib/methods/timeperiodtask.h | 45 +++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 29 deletions(-) create mode 100644 lib/methods/timeperiodtask.cpp create mode 100644 lib/methods/timeperiodtask.h diff --git a/lib/icinga/timeperiod.cpp b/lib/icinga/timeperiod.cpp index 2c963e7ed..8fe6b21e2 100644 --- a/lib/icinga/timeperiod.cpp +++ b/lib/icinga/timeperiod.cpp @@ -20,7 +20,6 @@ #include "icinga/timeperiod.h" #include "config/configitem.h" #include "base/dynamictype.h" -#include "base/scriptfunction.h" #include "base/objectlock.h" #include "base/logger_fwd.h" #include "base/timer.h" @@ -30,8 +29,6 @@ using namespace icinga; REGISTER_TYPE(TimePeriod); -REGISTER_SCRIPTFUNCTION(EmptyTimePeriod, &TimePeriod::EmptyTimePeriodUpdate); -REGISTER_SCRIPTFUNCTION(EvenMinutesTimePeriod, &TimePeriod::EvenMinutesTimePeriodUpdate); static Timer::Ptr l_UpdateTimer; @@ -272,29 +269,6 @@ void TimePeriod::UpdateTimerHandler(void) } } -Array::Ptr TimePeriod::EmptyTimePeriodUpdate(const TimePeriod::Ptr&, double, double) -{ - Array::Ptr segments = make_shared(); - return segments; -} - -Array::Ptr TimePeriod::EvenMinutesTimePeriodUpdate(const TimePeriod::Ptr&, double begin, double end) -{ - Array::Ptr segments = make_shared(); - - for (long t = begin / 60 - 1; t * 60 < end; t++) { - if ((t % 2) == 0) { - Dictionary::Ptr segment = make_shared(); - segment->Set("begin", t * 60); - segment->Set("end", (t + 1) * 60); - - segments->Add(segment); - } - } - - return segments; -} - void TimePeriod::Dump(void) { Array::Ptr segments = GetSegments(); diff --git a/lib/icinga/timeperiod.h b/lib/icinga/timeperiod.h index a4712c368..8062b5c7d 100644 --- a/lib/icinga/timeperiod.h +++ b/lib/icinga/timeperiod.h @@ -45,9 +45,6 @@ public: bool IsInside(double ts) const; double FindNextTransition(double begin); - static Array::Ptr EmptyTimePeriodUpdate(const TimePeriod::Ptr& tp, double begin, double end); - static Array::Ptr EvenMinutesTimePeriodUpdate(const TimePeriod::Ptr& tp, double begin, double end); - private: void AddSegment(double s, double end); void AddSegment(const Dictionary::Ptr& segment); diff --git a/lib/methods/CMakeLists.txt b/lib/methods/CMakeLists.txt index 7bfdd8e63..b5fe6b242 100644 --- a/lib/methods/CMakeLists.txt +++ b/lib/methods/CMakeLists.txt @@ -18,6 +18,7 @@ add_library(methods SHARED legacytimeperiod.cpp nullchecktask.cpp nulleventtask.cpp pluginchecktask.cpp plugineventtask.cpp pluginnotificationtask.cpp randomchecktask.cpp + timeperiodtask.cpp ) target_link_libraries(methods ${Boost_LIBRARIES} base config icinga) diff --git a/lib/methods/timeperiodtask.cpp b/lib/methods/timeperiodtask.cpp new file mode 100644 index 000000000..e8d23ccb2 --- /dev/null +++ b/lib/methods/timeperiodtask.cpp @@ -0,0 +1,49 @@ +/****************************************************************************** + * Icinga 2 * + * Copyright (C) 2012-2013 Icinga Development Team (http://www.icinga.org/) * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software Foundation * + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ******************************************************************************/ + +#include "methods/timeperiodtask.h" +#include "base/scriptfunction.h" + +using namespace icinga; + +REGISTER_SCRIPTFUNCTION(EmptyTimePeriod, &TimePeriodTask::EmptyTimePeriodUpdate); +REGISTER_SCRIPTFUNCTION(EvenMinutesTimePeriod, &TimePeriodTask::EvenMinutesTimePeriodUpdate); + +Array::Ptr TimePeriodTask::EmptyTimePeriodUpdate(const TimePeriod::Ptr&, double, double) +{ + Array::Ptr segments = make_shared(); + return segments; +} + +Array::Ptr TimePeriodTask::EvenMinutesTimePeriodUpdate(const TimePeriod::Ptr&, double begin, double end) +{ + Array::Ptr segments = make_shared(); + + for (long t = begin / 60 - 1; t * 60 < end; t++) { + if ((t % 2) == 0) { + Dictionary::Ptr segment = make_shared(); + segment->Set("begin", t * 60); + segment->Set("end", (t + 1) * 60); + + segments->Add(segment); + } + } + + return segments; +} \ No newline at end of file diff --git a/lib/methods/timeperiodtask.h b/lib/methods/timeperiodtask.h new file mode 100644 index 000000000..7e909a643 --- /dev/null +++ b/lib/methods/timeperiodtask.h @@ -0,0 +1,45 @@ +/****************************************************************************** + * Icinga 2 * + * Copyright (C) 2012-2013 Icinga Development Team (http://www.icinga.org/) * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software Foundation * + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ******************************************************************************/ + +#ifndef TIMEPERIODTASK_H +#define TIMEPERIODTASK_H + +#include "icinga/timeperiod.h" + +namespace icinga +{ + +/** +* Test timeperiod functions. +* +* @ingroup methods +*/ +class TimePeriodTask +{ +public: + static Array::Ptr EmptyTimePeriodUpdate(const TimePeriod::Ptr& tp, double begin, double end); + static Array::Ptr EvenMinutesTimePeriodUpdate(const TimePeriod::Ptr& tp, double begin, double end); + +private: + TimePeriodTask(void); +}; + +} + +#endif /* TIMEPERIODTASK_H */ \ No newline at end of file