mirror of https://github.com/Icinga/icinga2.git
parent
f027f1681b
commit
45f8bfb730
|
@ -72,9 +72,9 @@ void CheckerComponent::CheckThreadProc(void)
|
|||
break;
|
||||
|
||||
CheckTimeView::iterator it = idx.begin();
|
||||
Service::Ptr service = it->lock();
|
||||
Service::Ptr service = *it;
|
||||
|
||||
if (!service) {
|
||||
if (!service->IsRegistered()) {
|
||||
idx.erase(it);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -33,13 +33,8 @@ struct ServiceNextCheckExtractor
|
|||
/**
|
||||
* @threadsafety Caller must hold the mutex for the service.
|
||||
*/
|
||||
double operator()(const Service::WeakPtr& wservice)
|
||||
double operator()(const Service::Ptr& service)
|
||||
{
|
||||
Service::Ptr service = wservice.lock();
|
||||
|
||||
if (!service)
|
||||
return 0;
|
||||
|
||||
return service->GetNextCheck();
|
||||
}
|
||||
};
|
||||
|
@ -54,9 +49,9 @@ public:
|
|||
typedef weak_ptr<CheckerComponent> WeakPtr;
|
||||
|
||||
typedef multi_index_container<
|
||||
Service::WeakPtr,
|
||||
Service::Ptr,
|
||||
indexed_by<
|
||||
ordered_unique<identity<Service::WeakPtr> >,
|
||||
ordered_unique<identity<Service::Ptr> >,
|
||||
ordered_non_unique<ServiceNextCheckExtractor>
|
||||
>
|
||||
> ServiceSet;
|
||||
|
|
|
@ -33,7 +33,7 @@ signals2::signal<void (double, const set<DynamicObject::WeakPtr>&)> DynamicObjec
|
|||
signals2::signal<void (const DynamicObject::Ptr&)> DynamicObject::OnFlushObject;
|
||||
|
||||
DynamicObject::DynamicObject(const Dictionary::Ptr& serializedObject)
|
||||
: m_EventSafe(false), m_ConfigTx(0)
|
||||
: m_EventSafe(false), m_ConfigTx(0), m_Registered(false)
|
||||
{
|
||||
RegisterAttribute("__name", Attribute_Config, &m_Name);
|
||||
RegisterAttribute("__type", Attribute_Config, &m_Type);
|
||||
|
@ -309,6 +309,11 @@ bool DynamicObject::IsAbstract(void) const
|
|||
return m_Abstract;
|
||||
}
|
||||
|
||||
bool DynamicObject::IsRegistered(void) const
|
||||
{
|
||||
return m_Registered;
|
||||
}
|
||||
|
||||
void DynamicObject::SetSource(const String& value)
|
||||
{
|
||||
m_Source = value;
|
||||
|
@ -572,7 +577,10 @@ void DynamicObject::OnConstructionCompleted(void)
|
|||
}
|
||||
|
||||
void DynamicObject::OnRegistrationCompleted(void)
|
||||
{ }
|
||||
{
|
||||
ObjectLock olock(this);
|
||||
m_Registered = true;
|
||||
}
|
||||
|
||||
void DynamicObject::OnAttributeChanged(const String&, const Value&)
|
||||
{ }
|
||||
|
|
|
@ -238,6 +238,7 @@ public:
|
|||
|
||||
bool IsLocal(void) const;
|
||||
bool IsAbstract(void) const;
|
||||
bool IsRegistered(void) const;
|
||||
|
||||
void SetSource(const String& value);
|
||||
String GetSource(void) const;
|
||||
|
@ -286,6 +287,7 @@ private:
|
|||
Attribute<String> m_Source;
|
||||
Attribute<Dictionary::Ptr> m_Methods;
|
||||
|
||||
bool m_Registered;
|
||||
bool m_EventSafe;
|
||||
|
||||
static double m_CurrentTx;
|
||||
|
|
Loading…
Reference in New Issue