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/jpsock.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/jpsock.hpp')
-rw-r--r-- | xmrstak/net/jpsock.hpp | 42 |
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; |