]> granicus.if.org Git - icinga2/commitdiff
Added assert()s for some common thread-safety problems.
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 10 Jul 2012 11:00:53 +0000 (13:00 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 10 Jul 2012 11:00:53 +0000 (13:00 +0200)
base/application.cpp
base/configobject.cpp
base/logger.cpp
base/socket.cpp
base/timer.cpp

index cd05dc7567ddc4aa15b0eb5b0720a0ede544886e..352cbf2e8ef3ce592a5b94fef62a4e76799a65b3 100644 (file)
@@ -134,6 +134,8 @@ Component::Ptr Application::LoadComponent(const string& path,
        Component::Ptr component;
        Component *(*pCreateComponent)();
 
+       assert(Application::IsMainThread());
+
        Logger::Write(LogInformation, "base", "Loading component '" + path + "'");
 
 #ifdef _WIN32
index fea51e131d225db3eedd79bf2a5de1c100b735c0..e196ec109b97de0003f1637c55b2f986e169f0a3 100644 (file)
@@ -113,6 +113,8 @@ time_t ConfigObject::GetCommitTimestamp(void) const
 
 void ConfigObject::Commit(void)
 {
+       assert(Application::IsMainThread());
+
        ConfigObject::Ptr dobj = GetObject(GetType(), GetName());
        ConfigObject::Ptr self = GetSelf();
        assert(!dobj || dobj == self);
@@ -125,6 +127,8 @@ void ConfigObject::Commit(void)
 
 void ConfigObject::Unregister(void)
 {
+       assert(Application::IsMainThread());
+
        ConfigObject::Ptr self = GetSelf();
        m_Container->RemoveObject(self);
 }
index 1ecee90c914e0d8e44456c1b5dedef38acbfa0ea..7d758858740853070bd467aeefe9556e4da6d570 100644 (file)
@@ -61,6 +61,8 @@ void Logger::Write(LogSeverity severity, const string& facility,
  */
 void Logger::RegisterLogger(const Logger::Ptr& logger)
 {
+       assert(Application::IsMainThread());
+
        m_Loggers.push_back(logger);
 }
 
index b610366881ad4598ee97e4f9196c0676df5d37b3..bdc2561eb86ef728eba33a12ff7038f70ecf7b2c 100644 (file)
@@ -34,11 +34,8 @@ Socket::Socket(void)
  */
 Socket::~Socket(void)
 {
-       {
-               mutex::scoped_lock lock(m_Mutex);
-
-               CloseInternal(true);
-       }
+       mutex::scoped_lock lock(m_Mutex);
+       CloseInternal(true);
 }
 
 void Socket::Start(void)
index f19a70394317ac7c0cce3962b90fe4117b9f9d8e..a34e91802290afc2eb79b65726efc0e5d5bcc50f 100644 (file)
@@ -136,6 +136,8 @@ long Timer::GetInterval(void) const
  */
 void Timer::Start(void)
 {
+       assert(Application::IsMainThread());
+
        Stop();
 
        Timers.push_back(GetSelf());
@@ -148,6 +150,8 @@ void Timer::Start(void)
  */
 void Timer::Stop(void)
 {
+       assert(Application::IsMainThread());
+
        Timers.remove_if(WeakPtrEqual<Timer>(this));
 }