/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */

library icinga;

namespace icinga
{

code {{{
/**
 * The state of a host.
 *
 * @ingroup icinga
 */
enum HostState
{
	HostUp = 0,
	HostDown = 1
};

/**
 * The state of a service.
 *
 * @ingroup icinga
 */
enum ServiceState
{
	ServiceOK = 0,
	ServiceWarning = 1,
	ServiceCritical = 2,
	ServiceUnknown = 3
};

/**
 * 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 exit_status;

	[state, enum] ServiceState "state";
	[state, enum] ServiceState previous_hard_state;
	[state] String output;
	[state] 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;
};

}
