Service::OnNotificationSendStart(this, checkable, allUsers, type, cr, author, text);
std::set<User::Ptr> allNotifiedUsers;
+ Array::Ptr notifiedUsers = GetNotifiedUsers();
BOOST_FOREACH(const User::Ptr& user, allUsers) {
String userName = user->GetName();
/* on recovery, check if user was notified before */
if (type == NotificationRecovery) {
- if (m_NotifiedUsers.find(userName) == m_NotifiedUsers.end()) {
+ if (!notifiedUsers->Contains(userName)) {
Log(LogNotice, "Notification")
<< "We did not notify user '" << userName << "' before. Not sending recovery notification.";
continue;
allNotifiedUsers.insert(user);
/* store all notified users for later recovery checks */
- m_NotifiedUsers.insert(userName);
+ if (!notifiedUsers->Contains(userName))
+ notifiedUsers->Add(userName);
}
/* if this was a recovery notification, reset all notified users */
if (type == NotificationRecovery)
- ResetNotifiedUsers();
+ notifiedUsers->Clear();
/* used in db_ido for notification history */
Service::OnNotificationSentToAllUsers(this, checkable, allNotifiedUsers, type, cr, author, text);
}
}
-void Notification::ResetNotifiedUsers(void)
-{
- m_NotifiedUsers.clear();
-}
-
int icinga::ServiceStateToFilter(ServiceState state)
{
switch (state) {
bool CheckNotificationUserFilters(NotificationType type, const User::Ptr& user, bool force);
- void ResetNotifiedUsers(void);
Endpoint::Ptr GetCommandEndpoint(void) const;
static String NotificationTypeToString(NotificationType type);
virtual void Stop(void);
private:
- std::set<String> m_NotifiedUsers;
-
void ExecuteNotificationHelper(NotificationType type, const User::Ptr& user, const CheckResult::Ptr& cr, bool force, const String& author = "", const String& text = "");
static void EvaluateApplyRuleOneInstance(const intrusive_ptr<Checkable>& checkable, const String& name, const Dictionary::Ptr& locals, const ApplyRule& rule);
[config, protected] String host_name;
[config, protected] String service_name;
+ [state] Array::Ptr notified_users {
+ default {{{ return new Array(); }}}
+ };
+
[state] double last_notification;
[state, set_protected] double next_notification (NextNotificationRaw);
[state, set_protected] Value notification_number;