]> granicus.if.org Git - icinga2/commitdiff
Introduce Checkable#next_update
authorAlexander A. Klimov <alexander.klimov@icinga.com>
Tue, 24 Sep 2019 15:54:20 +0000 (17:54 +0200)
committerAlexander A. Klimov <alexander.klimov@icinga.com>
Wed, 25 Sep 2019 08:44:49 +0000 (10:44 +0200)
lib/icinga/checkable.cpp
lib/icinga/checkable.hpp
lib/icinga/checkable.ti

index 04e462951b675e32245dfed4859fbb9492cf3cfa..0ab090284b76cb35260aed5c8d36a68542d4b28b 100644 (file)
@@ -168,6 +168,19 @@ bool Checkable::GetHandled() const
        return GetProblem() && (IsInDowntime() || IsAcknowledged());
 }
 
+Timestamp Checkable::GetNextUpdate() const
+{
+       auto cr (GetLastCheckResult());
+
+       if (cr) {
+               return GetNextCheck()
+                       + (GetProblem() && GetStateType() == StateTypeSoft ? GetRetryInterval() : GetCheckInterval())
+                       + 2 * (cr->GetExecutionEnd() - cr->GetScheduleStart());
+       } else {
+               return GetNextCheck() + GetCheckInterval();
+       }
+}
+
 void Checkable::NotifyFixedDowntimeStart(const Downtime::Ptr& downtime)
 {
        if (!downtime->GetFixed())
index caddd63f45fad3e368b64298e3ddfa693b66efc6..032910adba2ca63c29ca3e5bbbf7f1e3c1d715e4 100644 (file)
@@ -91,6 +91,7 @@ public:
        int GetSeverity() const override;
        bool GetProblem() const override;
        bool GetHandled() const override;
+       Timestamp GetNextUpdate() const override;
 
        /* Checks */
        intrusive_ptr<CheckCommand> GetCheckCommand() const;
index 7969d6f46695cfa9881f91292e715714b0497abf..a920d2589a17fdac50616be0986586975a7d7bd9 100644 (file)
@@ -132,6 +132,9 @@ abstract class Checkable : CustomVarObject
        [no_storage] bool handled {
                get;
        };
+       [no_storage] Timestamp next_update {
+               get;
+       };
 
        [state] bool force_next_check;
        [state] int acknowledgement (AcknowledgementRaw) {