summaryrefslogtreecommitdiffstats
path: root/xmrstak/net/jpsock.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/jpsock.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/jpsock.hpp')
-rw-r--r--xmrstak/net/jpsock.hpp42
1 files changed, 36 insertions, 6 deletions
diff --git a/xmrstak/net/jpsock.hpp b/xmrstak/net/jpsock.hpp
index e94eaad..db8cd0e 100644
--- a/xmrstak/net/jpsock.hpp
+++ b/xmrstak/net/jpsock.hpp
@@ -26,20 +26,37 @@ class base_socket;
class jpsock
{
public:
- jpsock(size_t id, bool tls);
+ jpsock(size_t id, const char* sAddr, const char* sLogin, const char* sPassword, double pool_weight, bool dev_pool, bool tls, const char* tls_fp, bool nicehash);
~jpsock();
- bool connect(const char* sAddr, std::string& sConnectError);
- void disconnect();
+ bool connect(std::string& sConnectError);
+ void disconnect(bool quiet = false);
- bool cmd_login(const char* sLogin, const char* sPassword);
+ bool cmd_login();
bool cmd_submit(const char* sJobId, uint32_t iNonce, const uint8_t* bResult);
static bool hex2bin(const char* in, unsigned int len, unsigned char* out);
static void bin2hex(const unsigned char* in, unsigned int len, char* out);
+ inline double get_pool_weight(bool gross_weight)
+ {
+ double ret = pool_weight;
+ if(gross_weight && bRunning)
+ ret += 10.0;
+ if(gross_weight && bLoggedIn)
+ ret += 10.0;
+ return ret;
+ }
+
+ inline size_t can_connect() { return get_timestamp() != connect_time; }
inline bool is_running() { return bRunning; }
inline bool is_logged_in() { return bLoggedIn; }
+ inline bool is_dev_pool() { return pool; }
+ inline size_t get_pool_id() { return pool_id; }
+ inline bool get_disconnects(size_t& att, size_t& time) { att = connect_attempts; time = disconnect_time != 0 ? get_timestamp() - disconnect_time + 1 : 0; return pool && usr_login[0]; }
+ inline const char* get_pool_addr() { return net_addr.c_str(); }
+ inline const char* get_tls_fp() { return tls_fp.c_str(); }
+ inline bool is_nicehash() { return nicehash; }
std::string&& get_call_error();
bool have_sock_error() { return bHaveSocketError; }
@@ -53,8 +70,6 @@ public:
void save_nonce(uint32_t nonce);
bool get_current_job(pool_job& job);
- size_t pool_id;
-
bool set_socket_error(const char* a);
bool set_socket_error(const char* a, const char* b);
bool set_socket_error(const char* a, size_t len);
@@ -62,8 +77,23 @@ public:
bool set_socket_error_strerr(const char* a, int res);
private:
+ std::string net_addr;
+ std::string usr_login;
+ std::string usr_pass;
+ std::string tls_fp;
+
+ size_t pool_id;
+ double pool_weight;
+ bool pool;
+ bool nicehash;
+
+ size_t connect_time = 0;
+ std::atomic<size_t> connect_attempts;
+ std::atomic<size_t> disconnect_time;
+
std::atomic<bool> bRunning;
std::atomic<bool> bLoggedIn;
+ std::atomic<bool> quiet_close;
uint8_t* bJsonRecvMem;
uint8_t* bJsonParseMem;
OpenPOWER on IntegriCloud