From ed3a39dc74951f3f8d5cc11ca1369b9a0d421468 Mon Sep 17 00:00:00 2001 From: XMRig Date: Sat, 17 Aug 2019 04:27:37 +0700 Subject: [PATCH] Added version field to config file. --- src/backend/cpu/CpuConfig.cpp | 16 +++++++++++++++- src/backend/cpu/CpuConfig.h | 3 ++- src/base/kernel/config/BaseConfig.cpp | 1 + src/base/kernel/config/BaseConfig.h | 4 +++- src/core/config/Config.cpp | 24 ++++++++++++++++++++---- src/core/config/Config.h | 2 +- 6 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/backend/cpu/CpuConfig.cpp b/src/backend/cpu/CpuConfig.cpp index 87159246..a044cc4a 100644 --- a/src/backend/cpu/CpuConfig.cpp +++ b/src/backend/cpu/CpuConfig.cpp @@ -128,7 +128,7 @@ std::vector xmrig::CpuConfig::get(const Miner *miner, cons } -void xmrig::CpuConfig::read(const rapidjson::Value &value) +void xmrig::CpuConfig::read(const rapidjson::Value &value, uint32_t version) { if (value.IsObject()) { m_enabled = Json::getBool(value, kEnabled, m_enabled); @@ -148,6 +148,10 @@ void xmrig::CpuConfig::read(const rapidjson::Value &value) if (!m_threads.read(value)) { generate(); } + + if (version == 0) { + generateArgon2(); + } } else if (value.IsBool() && value.IsFalse()) { m_enabled = false; @@ -187,6 +191,16 @@ void xmrig::CpuConfig::generate() m_threads.move(kRx, cpu->threads(Algorithm::RX_0)); m_threads.move(kRxWOW, cpu->threads(Algorithm::RX_WOW)); # endif + + generateArgon2(); +} + + +void xmrig::CpuConfig::generateArgon2() +{ +# ifdef XMRIG_ALGO_ARGON2 + m_threads.move(kArgon2, Cpu::info()->threads(Algorithm::AR2_CHUKWA)); +# endif } diff --git a/src/backend/cpu/CpuConfig.h b/src/backend/cpu/CpuConfig.h index 48a3bdd4..67010eea 100644 --- a/src/backend/cpu/CpuConfig.h +++ b/src/backend/cpu/CpuConfig.h @@ -49,7 +49,7 @@ public: bool isHwAES() const; rapidjson::Value toJSON(rapidjson::Document &doc) const; std::vector get(const Miner *miner, const Algorithm &algorithm) const; - void read(const rapidjson::Value &value); + void read(const rapidjson::Value &value, uint32_t version); inline bool isEnabled() const { return m_enabled; } inline bool isHugePages() const { return m_hugePages; } @@ -61,6 +61,7 @@ public: private: void generate(); + void generateArgon2(); void setAesMode(const rapidjson::Value &aesMode); inline void setPriority(int priority) { m_priority = (priority >= -1 && priority <= 5) ? priority : -1; } diff --git a/src/base/kernel/config/BaseConfig.cpp b/src/base/kernel/config/BaseConfig.cpp index 4600a1f4..3da06b57 100644 --- a/src/base/kernel/config/BaseConfig.cpp +++ b/src/base/kernel/config/BaseConfig.cpp @@ -134,6 +134,7 @@ bool xmrig::BaseConfig::read(const IJsonReader &reader, const char *fileName) Log::colors = reader.getBool("colors", Log::colors); m_logFile = reader.getString("log-file"); m_userAgent = reader.getString("user-agent"); + m_version = reader.getUint("version"); setPrintTime(reader.getUint("print-time", 60)); diff --git a/src/base/kernel/config/BaseConfig.h b/src/base/kernel/config/BaseConfig.h index c5cf29a3..b58c47b6 100644 --- a/src/base/kernel/config/BaseConfig.h +++ b/src/base/kernel/config/BaseConfig.h @@ -56,6 +56,7 @@ public: inline const String &apiId() const { return m_apiId; } inline const String &apiWorkerId() const { return m_apiWorkerId; } inline uint32_t printTime() const { return m_printTime; } + inline uint32_t version() const { return m_version; } inline bool isWatch() const override { return m_watch && !m_fileName.isNull(); } inline const String &fileName() const override { return m_fileName; } @@ -80,7 +81,8 @@ protected: String m_fileName; String m_logFile; String m_userAgent; - uint32_t m_printTime; + uint32_t m_printTime = 60; + uint32_t m_version = 0; private: inline void setPrintTime(uint32_t printTime) { if (printTime <= 3600) { m_printTime = printTime; } } diff --git a/src/core/config/Config.cpp b/src/core/config/Config.cpp index 44aa6029..7432ee74 100644 --- a/src/core/config/Config.cpp +++ b/src/core/config/Config.cpp @@ -40,7 +40,8 @@ namespace xmrig { -static const char *kCPU = "cpu"; +static const char *kCPU = "cpu"; +static constexpr const uint32_t kVersion = 1; #ifdef XMRIG_ALGO_RANDOMX static const char *kRandomX = "randomx"; @@ -54,13 +55,27 @@ xmrig::Config::Config() : BaseConfig() } +bool xmrig::Config::isShouldSave() const +{ + if (!isAutoSave()) { + return false; + } + + if (version() < kVersion) { + return true; + } + + return (m_shouldSave || m_upgrade || m_cpu.isShouldSave()); +} + + bool xmrig::Config::read(const IJsonReader &reader, const char *fileName) { if (!BaseConfig::read(reader, fileName)) { return false; } - m_cpu.read(reader.getValue(kCPU)); + m_cpu.read(reader.getValue(kCPU), version()); # ifdef XMRIG_ALGO_RANDOMX if (!m_rx.read(reader.getValue(kRandomX))) { @@ -81,12 +96,13 @@ void xmrig::Config::getJSON(rapidjson::Document &doc) const auto &allocator = doc.GetAllocator(); Value api(kObjectType); - api.AddMember("id", m_apiId.toJSON(), allocator); - api.AddMember("worker-id", m_apiWorkerId.toJSON(), allocator); + api.AddMember("id", m_apiId.toJSON(), allocator); + api.AddMember("worker-id", m_apiWorkerId.toJSON(), allocator); doc.AddMember("api", api, allocator); doc.AddMember("http", m_http.toJSON(doc), allocator); doc.AddMember("autosave", isAutoSave(), allocator); + doc.AddMember("version", kVersion, allocator); doc.AddMember("background", isBackground(), allocator); doc.AddMember("colors", Log::colors, allocator); diff --git a/src/core/config/Config.h b/src/core/config/Config.h index 0014cb05..1f6a0f2f 100644 --- a/src/core/config/Config.h +++ b/src/core/config/Config.h @@ -50,10 +50,10 @@ class Config : public BaseConfig public: Config(); + bool isShouldSave() const; bool read(const IJsonReader &reader, const char *fileName) override; void getJSON(rapidjson::Document &doc) const override; - inline bool isShouldSave() const { return (m_shouldSave || m_upgrade || m_cpu.isShouldSave()) && isAutoSave(); } inline const CpuConfig &cpu() const { return m_cpu; } # ifdef XMRIG_ALGO_RANDOMX