mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-21 12:44:58 +02:00
Merge pull request #10222 from Icinga/Registry-cleanup
Clean up Registry class
This commit is contained in:
commit
adde9cc53b
@ -23,16 +23,6 @@ class Registry
|
|||||||
public:
|
public:
|
||||||
typedef std::map<String, T> ItemMap;
|
typedef std::map<String, T> ItemMap;
|
||||||
|
|
||||||
void RegisterIfNew(const String& name, const T& item)
|
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
|
||||||
|
|
||||||
if (m_Items.find(name) != m_Items.end())
|
|
||||||
return;
|
|
||||||
|
|
||||||
RegisterInternal(name, item, lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Register(const String& name, const T& item)
|
void Register(const String& name, const T& item)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
std::unique_lock<std::mutex> lock(m_Mutex);
|
||||||
@ -40,38 +30,6 @@ public:
|
|||||||
RegisterInternal(name, item, lock);
|
RegisterInternal(name, item, lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unregister(const String& name)
|
|
||||||
{
|
|
||||||
size_t erased;
|
|
||||||
|
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
|
||||||
erased = m_Items.erase(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (erased > 0)
|
|
||||||
OnUnregistered(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Clear()
|
|
||||||
{
|
|
||||||
typename Registry<U, T>::ItemMap items;
|
|
||||||
|
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
|
||||||
items = m_Items;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto& kv : items) {
|
|
||||||
OnUnregistered(kv.first);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
|
||||||
m_Items.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
T GetItem(const String& name) const
|
T GetItem(const String& name) const
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
std::unique_lock<std::mutex> lock(m_Mutex);
|
||||||
|
@ -29,11 +29,6 @@ void ApiAction::Register(const String& name, const ApiAction::Ptr& action)
|
|||||||
ApiActionRegistry::GetInstance()->Register(name, action);
|
ApiActionRegistry::GetInstance()->Register(name, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApiAction::Unregister(const String& name)
|
|
||||||
{
|
|
||||||
ApiActionRegistry::GetInstance()->Unregister(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiActionRegistry *ApiActionRegistry::GetInstance()
|
ApiActionRegistry *ApiActionRegistry::GetInstance()
|
||||||
{
|
{
|
||||||
return Singleton<ApiActionRegistry>::GetInstance();
|
return Singleton<ApiActionRegistry>::GetInstance();
|
||||||
|
@ -34,7 +34,6 @@ public:
|
|||||||
|
|
||||||
static ApiAction::Ptr GetByName(const String& name);
|
static ApiAction::Ptr GetByName(const String& name);
|
||||||
static void Register(const String& name, const ApiAction::Ptr& action);
|
static void Register(const String& name, const ApiAction::Ptr& action);
|
||||||
static void Unregister(const String& name);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<String> m_Types;
|
std::vector<String> m_Types;
|
||||||
|
@ -24,11 +24,6 @@ void ApiFunction::Register(const String& name, const ApiFunction::Ptr& function)
|
|||||||
ApiFunctionRegistry::GetInstance()->Register(name, function);
|
ApiFunctionRegistry::GetInstance()->Register(name, function);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApiFunction::Unregister(const String& name)
|
|
||||||
{
|
|
||||||
ApiFunctionRegistry::GetInstance()->Unregister(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiFunctionRegistry *ApiFunctionRegistry::GetInstance()
|
ApiFunctionRegistry *ApiFunctionRegistry::GetInstance()
|
||||||
{
|
{
|
||||||
return Singleton<ApiFunctionRegistry>::GetInstance();
|
return Singleton<ApiFunctionRegistry>::GetInstance();
|
||||||
|
@ -31,7 +31,6 @@ public:
|
|||||||
|
|
||||||
static ApiFunction::Ptr GetByName(const String& name);
|
static ApiFunction::Ptr GetByName(const String& name);
|
||||||
static void Register(const String& name, const ApiFunction::Ptr& function);
|
static void Register(const String& name, const ApiFunction::Ptr& function);
|
||||||
static void Unregister(const String& name);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Callback m_Callback;
|
Callback m_Callback;
|
||||||
|
@ -71,14 +71,6 @@ void EventQueue::RemoveClient(void *client)
|
|||||||
m_Events.erase(client);
|
m_Events.erase(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventQueue::UnregisterIfUnused(const String& name, const EventQueue::Ptr& queue)
|
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> lock(queue->m_Mutex);
|
|
||||||
|
|
||||||
if (queue->m_Events.empty())
|
|
||||||
Unregister(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventQueue::SetTypes(const std::set<String>& types)
|
void EventQueue::SetTypes(const std::set<String>& types)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(m_Mutex);
|
std::unique_lock<std::mutex> lock(m_Mutex);
|
||||||
@ -135,11 +127,6 @@ void EventQueue::Register(const String& name, const EventQueue::Ptr& function)
|
|||||||
EventQueueRegistry::GetInstance()->Register(name, function);
|
EventQueueRegistry::GetInstance()->Register(name, function);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventQueue::Unregister(const String& name)
|
|
||||||
{
|
|
||||||
EventQueueRegistry::GetInstance()->Unregister(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
EventQueueRegistry *EventQueueRegistry::GetInstance()
|
EventQueueRegistry *EventQueueRegistry::GetInstance()
|
||||||
{
|
{
|
||||||
return Singleton<EventQueueRegistry>::GetInstance();
|
return Singleton<EventQueueRegistry>::GetInstance();
|
||||||
|
@ -38,11 +38,9 @@ public:
|
|||||||
Dictionary::Ptr WaitForEvent(void *client, double timeout = 5);
|
Dictionary::Ptr WaitForEvent(void *client, double timeout = 5);
|
||||||
|
|
||||||
static std::vector<EventQueue::Ptr> GetQueuesForType(const String& type);
|
static std::vector<EventQueue::Ptr> GetQueuesForType(const String& type);
|
||||||
static void UnregisterIfUnused(const String& name, const EventQueue::Ptr& queue);
|
|
||||||
|
|
||||||
static EventQueue::Ptr GetByName(const String& name);
|
static EventQueue::Ptr GetByName(const String& name);
|
||||||
static void Register(const String& name, const EventQueue::Ptr& function);
|
static void Register(const String& name, const EventQueue::Ptr& function);
|
||||||
static void Unregister(const String& name);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
String m_Name;
|
String m_Name;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user