[Windows Agent] Avoid execute module at first time if is out cron

This commit is contained in:
fermin831 2018-02-22 09:55:59 +01:00
parent 611652820c
commit 5a3e4e1599
3 changed files with 23 additions and 3 deletions

View File

@ -232,6 +232,22 @@ bool Cron::shouldExecuteAt (time_t date) {
return this->utimestamp < date; return this->utimestamp < date;
} }
/**
* @brief Check if a module should be executed when utimestamp is not calculated yet
*
* @param date Current date
* @return true It is not first time and current date fit in cron
* @return false Don't execute first time
*/
bool Cron::shouldExecuteAtFirst (time_t date) {
// Return true if it is not first
if (this->utimestamp != 0) return true;
// Check current date in cron
return isInCron(date);
}
/** /**
* @brief Update the cron utimestamp * @brief Update the cron utimestamp
* *

View File

@ -1,7 +1,7 @@
/* Pandora cron manager for Win32. /* Pandora cron manager for Win32.
Copyright (C) 2016 Artica ST. Copyright (C) 2018 Artica ST.
Written by Ramon Novoa. Written by Fermin Hernandez.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -72,6 +72,7 @@ class Cron {
// Other methods // Other methods
void update(time_t date, int interval); void update(time_t date, int interval);
bool shouldExecuteAt(time_t date); bool shouldExecuteAt(time_t date);
bool shouldExecuteAtFirst(time_t date);
}; };
#endif #endif

View File

@ -1578,9 +1578,12 @@ Pandora_Module::checkCron (int interval) {
time_t now = time(NULL); time_t now = time(NULL);
if (!this->cron->shouldExecuteAt(now)) return false; if (!this->cron->shouldExecuteAt(now)) return false;
// Check if should execute this module at first before update cron params
bool execute = this->cron->shouldExecuteAtFirst(now);
this->cron->update(now, interval); this->cron->update(now, interval);
return true; return execute;
} }
/** /**