summaryrefslogtreecommitdiffstats
path: root/src/DeadlockDetect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DeadlockDetect.cpp')
-rw-r--r--src/DeadlockDetect.cpp38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/DeadlockDetect.cpp b/src/DeadlockDetect.cpp
index 411d452f6..df14e610b 100644
--- a/src/DeadlockDetect.cpp
+++ b/src/DeadlockDetect.cpp
@@ -56,12 +56,25 @@ bool cDeadlockDetect::Start(int a_IntervalSec)
m_IntervalSec = a_IntervalSec;
// Read the initial world data:
- cRoot::Get()->ForEachWorld([=](cWorld & a_World)
+ class cFillIn :
+ public cWorldListCallback
+ {
+ public:
+ cFillIn(cDeadlockDetect * a_Detect) :
+ m_Detect(a_Detect)
+ {
+ }
+
+ virtual bool Item(cWorld * a_World) override
{
- SetWorldAge(a_World.GetName(), a_World.GetWorldAge());
+ m_Detect->SetWorldAge(a_World->GetName(), a_World->GetWorldAge());
return false;
}
- );
+
+ protected:
+ cDeadlockDetect * m_Detect;
+ } FillIn(this);
+ cRoot::Get()->ForEachWorld(FillIn);
return super::Start();
}
@@ -102,12 +115,25 @@ void cDeadlockDetect::Execute(void)
while (!m_ShouldTerminate)
{
// Check the world ages:
- cRoot::Get()->ForEachWorld([=](cWorld & a_World)
+ class cChecker :
+ public cWorldListCallback
+ {
+ public:
+ cChecker(cDeadlockDetect * a_Detect) :
+ m_Detect(a_Detect)
+ {
+ }
+
+ protected:
+ cDeadlockDetect * m_Detect;
+
+ virtual bool Item(cWorld * a_World) override
{
- CheckWorldAge(a_World.GetName(), a_World.GetWorldAge());
+ m_Detect->CheckWorldAge(a_World->GetName(), a_World->GetWorldAge());
return false;
}
- );
+ } Checker(this);
+ cRoot::Get()->ForEachWorld(Checker);
std::this_thread::sleep_for(std::chrono::milliseconds(CYCLE_MILLISECONDS));
} // while (should run)