Implemented donate over proxy.
This commit is contained in:
parent
0907d1eb0c
commit
4c95136e6a
9 changed files with 161 additions and 55 deletions
|
@ -44,15 +44,20 @@ class Controller;
|
|||
class IStrategyListener;
|
||||
|
||||
|
||||
class DonateStrategy : public IStrategy, public IStrategyListener, public ITimerListener
|
||||
class DonateStrategy : public IStrategy, public IStrategyListener, public ITimerListener, public IClientListener
|
||||
{
|
||||
public:
|
||||
DonateStrategy(Controller *controller, IStrategyListener *listener);
|
||||
~DonateStrategy() override;
|
||||
|
||||
public:
|
||||
inline bool isActive() const override { return state() == STATE_ACTIVE; }
|
||||
inline void resume() override {}
|
||||
protected:
|
||||
inline bool isActive() const override { return state() == STATE_ACTIVE; }
|
||||
inline Client *client() const override { return m_proxy ? m_proxy : m_strategy->client(); }
|
||||
inline void onJob(IStrategy *, Client *client, const Job &job) override { setJob(client, job); }
|
||||
inline void onJobReceived(Client *client, const Job &job, const rapidjson::Value &) override { setJob(client, job); }
|
||||
inline void onResultAccepted(Client *client, const SubmitResult &result, const char *error) override { setResult(client, result, error); }
|
||||
inline void onResultAccepted(IStrategy *, Client *client, const SubmitResult &result, const char *error) override { setResult(client, result, error); }
|
||||
inline void resume() override {}
|
||||
|
||||
int64_t submit(const JobResult &result) override;
|
||||
void connect() override;
|
||||
|
@ -60,11 +65,13 @@ public:
|
|||
void stop() override;
|
||||
void tick(uint64_t now) override;
|
||||
|
||||
protected:
|
||||
void onActive(IStrategy *strategy, Client *client) override;
|
||||
void onJob(IStrategy *strategy, Client *client, const Job &job) override;
|
||||
void onPause(IStrategy *strategy) override;
|
||||
void onResultAccepted(IStrategy *strategy, Client *client, const SubmitResult &result, const char *error) override;
|
||||
|
||||
void onClose(Client *client, int failures) override;
|
||||
void onLogin(Client *client, rapidjson::Document &doc, rapidjson::Value ¶ms) override;
|
||||
void onLoginSuccess(Client *client) override;
|
||||
|
||||
void onTimer(const Timer *timer) override;
|
||||
|
||||
private:
|
||||
|
@ -78,9 +85,14 @@ private:
|
|||
|
||||
inline State state() const { return m_state; }
|
||||
|
||||
Client *createProxy();
|
||||
void idle(double min, double max);
|
||||
void setJob(Client *client, const Job &job);
|
||||
void setResult(Client *client, const SubmitResult &result, const char *error);
|
||||
void setState(State state);
|
||||
|
||||
bool m_tls;
|
||||
char m_userId[65];
|
||||
Client *m_proxy;
|
||||
const uint64_t m_donateTime;
|
||||
const uint64_t m_idleTime;
|
||||
|
@ -91,7 +103,7 @@ private:
|
|||
std::vector<Pool> m_pools;
|
||||
Timer *m_timer;
|
||||
uint64_t m_now;
|
||||
uint64_t m_stop;
|
||||
uint64_t m_timestamp;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue