Added global config value with unix time of system boot, for system-wide consistent time calculations

This commit is contained in:
Siddarth Tegginamani 2021-11-10 13:03:27 +01:00 committed by Thulinma
parent 4033f1d009
commit 97f040cefd
2 changed files with 19 additions and 0 deletions

View file

@ -203,6 +203,7 @@ namespace Util{
const char * ptr(size_t recordNo) const;
void set(uint64_t val, size_t recordNo = 0);
void set(const std::string &val, size_t recordNo = 0);
operator bool() const {return src;}
private:
RelAccX *src;

View file

@ -33,6 +33,7 @@ namespace Controller{
Util::RelAccX *rlxAccs = 0;
IPC::sharedPage *shmStrm = 0;
Util::RelAccX *rlxStrm = 0;
uint64_t systemBoot = Util::unixMS() - Util::bootMS();
Util::RelAccX *logAccessor(){return rlxLogs;}
@ -422,13 +423,30 @@ namespace Controller{
if (!globCfg.mapped){globCfg.init(SHM_GLOBAL_CONF, 4096, true, false);}
if (globCfg.mapped){
Util::RelAccX globAccX(globCfg.mapped, false);
// if fields missing, recreate the page
if (globAccX.isReady()){
if(globAccX.getFieldAccX("systemBoot")){
systemBoot = globAccX.getInt("systemBoot");
}
if(!globAccX.getFieldAccX("defaultStream")
|| !globAccX.getFieldAccX("systemBoot")){
globAccX.setReload();
globCfg.master = true;
globCfg.close();
globCfg.init(SHM_GLOBAL_CONF, 4096, true, false);
globAccX = Util::RelAccX(globCfg.mapped, false);
}
}
if (!globAccX.isReady()){
globAccX.addField("defaultStream", RAX_128STRING);
globAccX.addField("systemBoot", RAX_64UINT);
globAccX.setRCount(1);
globAccX.setEndPos(1);
globAccX.setReady();
}
globAccX.setString("defaultStream", Storage["config"]["defaultStream"].asStringRef());
globAccX.setInt("systemBoot", systemBoot);
globCfg.master = false; // leave the page after closing
}
}