{
ObjectImpl<StatusDataWriter>::Start();
+ m_ObjectsCacheOutdated = true;
+
m_StatusTimer = new Timer();
m_StatusTimer->SetInterval(GetUpdateInterval());
m_StatusTimer->OnTimerExpired.connect(boost::bind(&StatusDataWriter::StatusTimerHandler, this));
m_StatusTimer->Start();
m_StatusTimer->Reschedule(0);
- Utility::QueueAsyncCallback(boost::bind(&StatusDataWriter::UpdateObjectsCache, this));
+ ConfigObject::OnVersionChanged.connect(boost::bind(&StatusDataWriter::VersionChangedHandler, this));
}
void StatusDataWriter::DumpComments(std::ostream& fp, const Checkable::Ptr& checkable)
*/
void StatusDataWriter::StatusTimerHandler(void)
{
+ if (m_ObjectsCacheOutdated) {
+ UpdateObjectsCache();
+ m_ObjectsCacheOutdated = false;
+ }
+
double start = Utility::GetTime();
String statuspath = GetStatusPath();
Log(LogNotice, "StatusDataWriter")
<< "Writing status.dat file took " << Utility::FormatDuration(Utility::GetTime() - start);
}
+
+void StatusDataWriter::VersionChangedHandler(void)
+{
+ m_ObjectsCacheOutdated = true;
+}
private:
Timer::Ptr m_StatusTimer;
+ bool m_ObjectsCacheOutdated;
void DumpCommand(std::ostream& fp, const Command::Ptr& command);
void DumpTimePeriod(std::ostream& fp, const TimePeriod::Ptr& tp);
void UpdateObjectsCache(void);
void StatusTimerHandler(void);
+ void VersionChangedHandler(void);
};
}