mirror of
https://github.com/Icinga/icinga2.git
synced 2026-07-15 11:51:07 -04:00
Since perfdata is set once when a check result is created and never changed again, locking this is unnecessary. This avoids components unnecessarily waiting on each other when processing perfdata. This fixes the locking cascade observed sometimes when the perfdata writer work queue blocks, where it extends to a lock on the entire check result eventually, affecting even more components.
77 lines
1.2 KiB
Text
77 lines
1.2 KiB
Text
// SPDX-FileCopyrightText: 2012 Icinga GmbH <https://icinga.com>
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#include <cstdint>
|
|
|
|
library icinga;
|
|
|
|
namespace icinga
|
|
{
|
|
|
|
code {{{
|
|
/**
|
|
* The state of a host.
|
|
*
|
|
* @ingroup icinga
|
|
*/
|
|
enum HostState
|
|
{
|
|
HostUp = 0,
|
|
HostDown = 1,
|
|
HostPending = 99,
|
|
};
|
|
|
|
/**
|
|
* The state of a service.
|
|
*
|
|
* @ingroup icinga
|
|
*/
|
|
enum ServiceState
|
|
{
|
|
ServiceOK = 0,
|
|
ServiceWarning = 1,
|
|
ServiceCritical = 2,
|
|
ServiceUnknown = 3,
|
|
ServicePending = 99,
|
|
};
|
|
|
|
/**
|
|
* The state type of a host or service.
|
|
*
|
|
* @ingroup icinga
|
|
*/
|
|
enum StateType
|
|
{
|
|
StateTypeSoft = 0,
|
|
StateTypeHard = 1
|
|
};
|
|
}}}
|
|
|
|
class CheckResult
|
|
{
|
|
[state] Timestamp schedule_start;
|
|
[state] Timestamp schedule_end;
|
|
[state] Timestamp execution_start;
|
|
[state] Timestamp execution_end;
|
|
|
|
[state] Value command;
|
|
[state] int_fast64_t exit_status;
|
|
|
|
[state, enum] ServiceState "state";
|
|
[state, enum] ServiceState previous_hard_state;
|
|
[state] String output;
|
|
[state, set_virtual] Array::Ptr performance_data;
|
|
|
|
[state] bool active {
|
|
default {{{ return true; }}}
|
|
};
|
|
|
|
[state] String check_source;
|
|
[state] String scheduling_source;
|
|
[state] double ttl;
|
|
|
|
[state] Dictionary::Ptr vars_before;
|
|
[state] Dictionary::Ptr vars_after;
|
|
};
|
|
|
|
}
|