diff options
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; |