diff options
author | fireice-uk <fireice-uk@users.noreply.github.com> | 2017-11-09 22:43:08 +0000 |
---|---|---|
committer | psychocrypt <psychocrypt@users.noreply.github.com> | 2017-11-09 23:43:08 +0100 |
commit | d35893d926c74893d7c85d1b87b24ffa55744649 (patch) | |
tree | b2c1186e3ad96696592e1572e553514af04048b4 /xmrstak/net/msgstruct.hpp | |
parent | b3237bab587f937e90a2ff0d06aba5e3630a8047 (diff) | |
download | xmr-stak-d35893d926c74893d7c85d1b87b24ffa55744649.zip xmr-stak-d35893d926c74893d7c85d1b87b24ffa55744649.tar.gz |
Multi-pool final version (#90)
* Multi-pool first draft
* Fix wspace from new IDE
* Better TLS error message
* Fix TLS bug
* Don't put dev pool on stats + pool change-back
* bug fixes
* Error message work
* fix win build
* add per-pool nicehash setting
* Fix bugs
* rm debug msg
* Multipool guided setup
* Support TLS and Nicehash in config
* prelim jconf changes
* final multipool changes
* increase default retry_time to 30, fix mac erro
* rm debug dev pool settings
* Fix another source of connect runaway
Diffstat (limited to 'xmrstak/net/msgstruct.hpp')
-rw-r--r-- | xmrstak/net/msgstruct.hpp | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/xmrstak/net/msgstruct.hpp b/xmrstak/net/msgstruct.hpp index 82b59c1..01aa76c 100644 --- a/xmrstak/net/msgstruct.hpp +++ b/xmrstak/net/msgstruct.hpp @@ -39,11 +39,33 @@ struct job_result } }; +struct sock_err +{ + std::string sSocketError; + bool silent; + + sock_err() {} + sock_err(std::string&& err, bool silent) : sSocketError(std::move(err)), silent(silent) { } + sock_err(sock_err&& from) : sSocketError(std::move(from.sSocketError)), silent(from.silent) {} + + sock_err& operator=(sock_err&& from) + { + assert(this != &from); + sSocketError = std::move(from.sSocketError); + silent = from.silent; + return *this; + } + + ~sock_err() { } + + sock_err(sock_err const&) = delete; + sock_err& operator=(sock_err const&) = delete; +}; enum ex_event_name { EV_INVALID_VAL, EV_SOCK_READY, EV_SOCK_ERROR, - EV_POOL_HAVE_JOB, EV_MINER_HAVE_RESULT, EV_PERF_TICK, EV_RECONNECT, - EV_SWITCH_POOL, EV_DEV_POOL_EXIT, EV_USR_HASHRATE, EV_USR_RESULTS, EV_USR_CONNSTAT, - EV_HASHRATE_LOOP, EV_HTML_HASHRATE, EV_HTML_RESULTS, EV_HTML_CONNSTAT, EV_HTML_JSON }; + EV_POOL_HAVE_JOB, EV_MINER_HAVE_RESULT, EV_PERF_TICK, EV_EVAL_POOL_CHOICE, + EV_USR_HASHRATE, EV_USR_RESULTS, EV_USR_CONNSTAT, EV_HASHRATE_LOOP, + EV_HTML_HASHRATE, EV_HTML_RESULTS, EV_HTML_CONNSTAT, EV_HTML_JSON }; /* This is how I learned to stop worrying and love c++11 =). @@ -64,11 +86,11 @@ struct ex_event { pool_job oPoolJob; job_result oJobResult; - std::string sSocketError; + sock_err oSocketError; }; ex_event() { iName = EV_INVALID_VAL; iPoolId = 0;} - ex_event(std::string&& err, size_t id) : iName(EV_SOCK_ERROR), iPoolId(id), sSocketError(std::move(err)) { } + ex_event(std::string&& err, bool silent, size_t id) : iName(EV_SOCK_ERROR), iPoolId(id), oSocketError(std::move(err), silent) { } ex_event(job_result dat, size_t id) : iName(EV_MINER_HAVE_RESULT), iPoolId(id), oJobResult(dat) {} ex_event(pool_job dat, size_t id) : iName(EV_POOL_HAVE_JOB), iPoolId(id), oPoolJob(dat) {} ex_event(ex_event_name ev, size_t id = 0) : iName(ev), iPoolId(id) {} @@ -85,7 +107,7 @@ struct ex_event switch(iName) { case EV_SOCK_ERROR: - new (&sSocketError) std::string(std::move(from.sSocketError)); + new (&oSocketError) sock_err(std::move(from.oSocketError)); break; case EV_MINER_HAVE_RESULT: oJobResult = from.oJobResult; @@ -103,7 +125,7 @@ struct ex_event assert(this != &from); if(iName == EV_SOCK_ERROR) - sSocketError.~basic_string(); + oSocketError.~sock_err(); iName = from.iName; iPoolId = from.iPoolId; @@ -111,8 +133,8 @@ struct ex_event switch(iName) { case EV_SOCK_ERROR: - new (&sSocketError) std::string(); - sSocketError = std::move(from.sSocketError); + new (&oSocketError) sock_err(); + oSocketError = std::move(from.oSocketError); break; case EV_MINER_HAVE_RESULT: oJobResult = from.oJobResult; @@ -130,6 +152,14 @@ struct ex_event ~ex_event() { if(iName == EV_SOCK_ERROR) - sSocketError.~basic_string(); + oSocketError.~sock_err(); } }; + +#include <chrono> +//Get steady_clock timestamp - misc helper function +inline size_t get_timestamp() +{ + using namespace std::chrono; + return time_point_cast<seconds>(steady_clock::now()).time_since_epoch().count(); +}; |