SDRPlusPlus/core/src/config.h
2021-07-29 15:07:22 +02:00

38 lines
776 B
C++

#pragma once
#include <json.hpp>
#include <thread>
#include <string>
#include <mutex>
#include <condition_variable>
#include <atomic>
using nlohmann::json;
class ConfigManager {
public:
ConfigManager();
~ConfigManager();
void setPath(std::string file);
void load(json def, bool lock = true);
void save(bool lock = true);
void enableAutoSave();
void disableAutoSave();
void acquire();
void release(bool modified = false);
json conf;
private:
void autoSaveWorker();
std::string path = "";
volatile bool changed = false;
volatile bool autoSaveEnabled = false;
std::thread autoSaveThread;
std::mutex mtx;
std::mutex termMtx;
std::condition_variable termCond;
volatile bool termFlag = false;
};