summaryrefslogtreecommitdiffstats
path: root/xmrstak/net/msgstruct.hpp
diff options
context:
space:
mode:
authorfireice-uk <fireice-uk@users.noreply.github.com>2017-11-09 22:43:08 +0000
committerpsychocrypt <psychocrypt@users.noreply.github.com>2017-11-09 23:43:08 +0100
commitd35893d926c74893d7c85d1b87b24ffa55744649 (patch)
treeb2c1186e3ad96696592e1572e553514af04048b4 /xmrstak/net/msgstruct.hpp
parentb3237bab587f937e90a2ff0d06aba5e3630a8047 (diff)
downloadxmr-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.hpp50
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();
+};
OpenPOWER on IntegriCloud