diff options
author | fireice-uk <fireice-uk@users.noreply.github.com> | 2017-10-13 16:35:10 +0100 |
---|---|---|
committer | fireice-uk <fireice-uk@users.noreply.github.com> | 2017-10-22 13:12:52 +0100 |
commit | f13f70c28eb9e4b38d3b4932f5845f1d5cc01906 (patch) | |
tree | dc2b85e4ddd9b02e35729502dd6ae96fc2443568 /xmrstak/net | |
parent | 610f4f0fa72c60daa14dc0661f58ba23563afb61 (diff) | |
download | xmr-stak-f13f70c28eb9e4b38d3b4932f5845f1d5cc01906.zip xmr-stak-f13f70c28eb9e4b38d3b4932f5845f1d5cc01906.tar.gz |
Implement pool-controlled nonce allocation
Diffstat (limited to 'xmrstak/net')
-rw-r--r-- | xmrstak/net/jpsock.cpp | 7 | ||||
-rw-r--r-- | xmrstak/net/jpsock.hpp | 1 | ||||
-rw-r--r-- | xmrstak/net/msgstruct.hpp | 6 |
3 files changed, 10 insertions, 4 deletions
diff --git a/xmrstak/net/jpsock.cpp b/xmrstak/net/jpsock.cpp index ae20e52..7735921 100644 --- a/xmrstak/net/jpsock.cpp +++ b/xmrstak/net/jpsock.cpp @@ -566,6 +566,12 @@ bool jpsock::cmd_submit(const char* sJobId, uint32_t iNonce, const uint8_t* bRes return cmd_ret_wait(cmd_buffer, oResult); } +void jpsock::save_nonce(uint32_t nonce) +{ + std::unique_lock<std::mutex>(job_mutex); + oCurrentJob.iSavedNonce = nonce; +} + bool jpsock::get_current_job(pool_job& job) { std::unique_lock<std::mutex>(job_mutex); @@ -573,7 +579,6 @@ bool jpsock::get_current_job(pool_job& job) if(oCurrentJob.iWorkLen == 0) return false; - oCurrentJob.iResumeCnt++; job = oCurrentJob; return true; } diff --git a/xmrstak/net/jpsock.hpp b/xmrstak/net/jpsock.hpp index c2194ad..e94eaad 100644 --- a/xmrstak/net/jpsock.hpp +++ b/xmrstak/net/jpsock.hpp @@ -50,6 +50,7 @@ public: inline uint64_t get_current_diff() { return iJobDiff; } + void save_nonce(uint32_t nonce); bool get_current_job(pool_job& job); size_t pool_id; diff --git a/xmrstak/net/msgstruct.hpp b/xmrstak/net/msgstruct.hpp index 05d15fe..8e8254b 100644 --- a/xmrstak/net/msgstruct.hpp +++ b/xmrstak/net/msgstruct.hpp @@ -15,11 +15,11 @@ struct pool_job // \todo remove workaround needed for amd uint32_t iTarget32; uint32_t iWorkLen; - uint32_t iResumeCnt; + uint32_t iSavedNonce; - pool_job() : iWorkLen(0), iResumeCnt(0) {} + pool_job() : iWorkLen(0), iSavedNonce(0) {} pool_job(const char* sJobID, uint64_t iTarget, const uint8_t* bWorkBlob, uint32_t iWorkLen) : - iTarget(iTarget), iWorkLen(iWorkLen), iResumeCnt(0) + iTarget(iTarget), iWorkLen(iWorkLen), iSavedNonce(0) { assert(iWorkLen <= sizeof(pool_job::bWorkBlob)); memcpy(this->sJobID, sJobID, sizeof(pool_job::sJobID)); |