Move EmptyTimePeriod and EvenMinutesTimePeriod to libmethods.

Fixes #5032
This commit is contained in:
Gunnar Beutner 2013-11-13 09:41:06 +01:00
parent 6ccf4497f2
commit 438d5c0f57
5 changed files with 95 additions and 29 deletions

View File

@ -20,7 +20,6 @@
#include "icinga/timeperiod.h" #include "icinga/timeperiod.h"
#include "config/configitem.h" #include "config/configitem.h"
#include "base/dynamictype.h" #include "base/dynamictype.h"
#include "base/scriptfunction.h"
#include "base/objectlock.h" #include "base/objectlock.h"
#include "base/logger_fwd.h" #include "base/logger_fwd.h"
#include "base/timer.h" #include "base/timer.h"
@ -30,8 +29,6 @@
using namespace icinga; using namespace icinga;
REGISTER_TYPE(TimePeriod); REGISTER_TYPE(TimePeriod);
REGISTER_SCRIPTFUNCTION(EmptyTimePeriod, &TimePeriod::EmptyTimePeriodUpdate);
REGISTER_SCRIPTFUNCTION(EvenMinutesTimePeriod, &TimePeriod::EvenMinutesTimePeriodUpdate);
static Timer::Ptr l_UpdateTimer; 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<Array>();
return segments;
}
Array::Ptr TimePeriod::EvenMinutesTimePeriodUpdate(const TimePeriod::Ptr&, double begin, double end)
{
Array::Ptr segments = make_shared<Array>();
for (long t = begin / 60 - 1; t * 60 < end; t++) {
if ((t % 2) == 0) {
Dictionary::Ptr segment = make_shared<Dictionary>();
segment->Set("begin", t * 60);
segment->Set("end", (t + 1) * 60);
segments->Add(segment);
}
}
return segments;
}
void TimePeriod::Dump(void) void TimePeriod::Dump(void)
{ {
Array::Ptr segments = GetSegments(); Array::Ptr segments = GetSegments();

View File

@ -45,9 +45,6 @@ public:
bool IsInside(double ts) const; bool IsInside(double ts) const;
double FindNextTransition(double begin); 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: private:
void AddSegment(double s, double end); void AddSegment(double s, double end);
void AddSegment(const Dictionary::Ptr& segment); void AddSegment(const Dictionary::Ptr& segment);

View File

@ -18,6 +18,7 @@
add_library(methods SHARED add_library(methods SHARED
legacytimeperiod.cpp nullchecktask.cpp nulleventtask.cpp pluginchecktask.cpp legacytimeperiod.cpp nullchecktask.cpp nulleventtask.cpp pluginchecktask.cpp
plugineventtask.cpp pluginnotificationtask.cpp randomchecktask.cpp plugineventtask.cpp pluginnotificationtask.cpp randomchecktask.cpp
timeperiodtask.cpp
) )
target_link_libraries(methods ${Boost_LIBRARIES} base config icinga) target_link_libraries(methods ${Boost_LIBRARIES} base config icinga)

View File

@ -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<Array>();
return segments;
}
Array::Ptr TimePeriodTask::EvenMinutesTimePeriodUpdate(const TimePeriod::Ptr&, double begin, double end)
{
Array::Ptr segments = make_shared<Array>();
for (long t = begin / 60 - 1; t * 60 < end; t++) {
if ((t % 2) == 0) {
Dictionary::Ptr segment = make_shared<Dictionary>();
segment->Set("begin", t * 60);
segment->Set("end", (t + 1) * 60);
segments->Add(segment);
}
}
return segments;
}

View File

@ -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 */