Add IClient and BaseClient.
This commit is contained in:
parent
1bd8d63508
commit
9a6944d694
16 changed files with 291 additions and 146 deletions
|
@ -91,18 +91,18 @@ void xmrig::Network::connect()
|
|||
}
|
||||
|
||||
|
||||
void xmrig::Network::onActive(IStrategy *strategy, Client *client)
|
||||
void xmrig::Network::onActive(IStrategy *strategy, IClient *client)
|
||||
{
|
||||
if (m_donate && m_donate == strategy) {
|
||||
LOG_NOTICE("dev donate started");
|
||||
return;
|
||||
}
|
||||
|
||||
m_state.setPool(client->host(), client->port(), client->ip());
|
||||
m_state.setPool(client->pool().host(), client->pool().port(), client->ip());
|
||||
|
||||
const char *tlsVersion = client->tlsVersion();
|
||||
LOG_INFO(WHITE_BOLD("use pool ") CYAN_BOLD("%s:%d ") GREEN_BOLD("%s") " " BLACK_BOLD("%s"),
|
||||
client->host(), client->port(), tlsVersion ? tlsVersion : "", client->ip());
|
||||
client->pool().host().data(), client->pool().port(), tlsVersion ? tlsVersion : "", client->ip().data());
|
||||
|
||||
const char *fingerprint = client->tlsFingerprint();
|
||||
if (fingerprint != nullptr) {
|
||||
|
@ -127,7 +127,7 @@ void xmrig::Network::onConfigChanged(Config *config, Config *previousConfig)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::Network::onJob(IStrategy *strategy, Client *client, const Job &job)
|
||||
void xmrig::Network::onJob(IStrategy *strategy, IClient *client, const Job &job)
|
||||
{
|
||||
if (m_donate && m_donate->isActive() && m_donate != strategy) {
|
||||
return;
|
||||
|
@ -176,7 +176,7 @@ void xmrig::Network::onRequest(IApiRequest &request)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::Network::onResultAccepted(IStrategy *, Client *, const SubmitResult &result, const char *error)
|
||||
void xmrig::Network::onResultAccepted(IStrategy *, IClient *, const SubmitResult &result, const char *error)
|
||||
{
|
||||
m_state.add(result, error);
|
||||
|
||||
|
@ -191,15 +191,15 @@ void xmrig::Network::onResultAccepted(IStrategy *, Client *, const SubmitResult
|
|||
}
|
||||
|
||||
|
||||
void xmrig::Network::setJob(Client *client, const Job &job, bool donate)
|
||||
void xmrig::Network::setJob(IClient *client, const Job &job, bool donate)
|
||||
{
|
||||
if (job.height()) {
|
||||
LOG_INFO(MAGENTA_BOLD("new job") " from " WHITE_BOLD("%s:%d") " diff " WHITE_BOLD("%" PRIu64) " algo " WHITE_BOLD("%s") " height " WHITE_BOLD("%" PRIu64),
|
||||
client->host(), client->port(), job.diff(), job.algorithm().shortName(), job.height());
|
||||
client->pool().host().data(), client->pool().port(), job.diff(), job.algorithm().shortName(), job.height());
|
||||
}
|
||||
else {
|
||||
LOG_INFO(MAGENTA_BOLD("new job") " from " WHITE_BOLD("%s:%d") " diff " WHITE_BOLD("%" PRIu64) " algo " WHITE_BOLD("%s"),
|
||||
client->host(), client->port(), job.diff(), job.algorithm().shortName());
|
||||
client->pool().host().data(), client->pool().port(), job.diff(), job.algorithm().shortName());
|
||||
}
|
||||
|
||||
if (!donate && m_donate) {
|
||||
|
|
|
@ -58,18 +58,18 @@ public:
|
|||
protected:
|
||||
inline void onTimer(const Timer *) override { tick(); }
|
||||
|
||||
void onActive(IStrategy *strategy, Client *client) override;
|
||||
void onActive(IStrategy *strategy, IClient *client) override;
|
||||
void onConfigChanged(Config *config, Config *previousConfig) override;
|
||||
void onJob(IStrategy *strategy, Client *client, const Job &job) override;
|
||||
void onJob(IStrategy *strategy, IClient *client, const Job &job) override;
|
||||
void onJobResult(const JobResult &result) override;
|
||||
void onPause(IStrategy *strategy) override;
|
||||
void onRequest(IApiRequest &request) override;
|
||||
void onResultAccepted(IStrategy *strategy, Client *client, const SubmitResult &result, const char *error) override;
|
||||
void onResultAccepted(IStrategy *strategy, IClient *client, const SubmitResult &result, const char *error) override;
|
||||
|
||||
private:
|
||||
constexpr static int kTickInterval = 1 * 1000;
|
||||
|
||||
void setJob(Client *client, const Job &job, bool donate);
|
||||
void setJob(IClient *client, const Job &job, bool donate);
|
||||
void tick();
|
||||
|
||||
# ifdef XMRIG_FEATURE_API
|
||||
|
|
|
@ -157,7 +157,7 @@ void xmrig::DonateStrategy::tick(uint64_t now)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::DonateStrategy::onActive(IStrategy *, Client *client)
|
||||
void xmrig::DonateStrategy::onActive(IStrategy *, IClient *client)
|
||||
{
|
||||
if (isActive()) {
|
||||
return;
|
||||
|
@ -173,7 +173,7 @@ void xmrig::DonateStrategy::onPause(IStrategy *)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::DonateStrategy::onClose(Client *, int failures)
|
||||
void xmrig::DonateStrategy::onClose(IClient *, int failures)
|
||||
{
|
||||
if (failures == 2 && m_controller->config()->pools().proxyDonate() == Pools::PROXY_DONATE_AUTO) {
|
||||
m_proxy->deleteLater();
|
||||
|
@ -184,7 +184,7 @@ void xmrig::DonateStrategy::onClose(Client *, int failures)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::DonateStrategy::onLogin(Client *, rapidjson::Document &doc, rapidjson::Value ¶ms)
|
||||
void xmrig::DonateStrategy::onLogin(IClient *, rapidjson::Document &doc, rapidjson::Value ¶ms)
|
||||
{
|
||||
auto &allocator = doc.GetAllocator();
|
||||
|
||||
|
@ -203,7 +203,7 @@ void xmrig::DonateStrategy::onLogin(Client *, rapidjson::Document &doc, rapidjso
|
|||
}
|
||||
|
||||
|
||||
void xmrig::DonateStrategy::onLoginSuccess(Client *client)
|
||||
void xmrig::DonateStrategy::onLoginSuccess(IClient *client)
|
||||
{
|
||||
if (isActive()) {
|
||||
return;
|
||||
|
@ -227,14 +227,14 @@ xmrig::Client *xmrig::DonateStrategy::createProxy()
|
|||
}
|
||||
|
||||
IStrategy *strategy = m_controller->network()->strategy();
|
||||
if (!strategy->isActive() || !strategy->client()->has<Client::EXT_CONNECT>()) {
|
||||
if (!strategy->isActive() || !strategy->client()->hasExtension(IClient::EXT_CONNECT)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const Client *client = strategy->client();
|
||||
m_tls = client->has<Client::EXT_TLS>();
|
||||
m_tls = client->hasExtension(IClient::EXT_TLS);
|
||||
|
||||
Pool pool(client->ip(), client->port(), m_userId, client->pool().password(), 0, true, client->isTLS());
|
||||
Pool pool(client->ip(), client->pool().port(), m_userId, client->pool().password(), 0, true, client->isTLS());
|
||||
pool.setAlgo(client->pool().algorithm());
|
||||
|
||||
Client *proxy = new Client(-1, Platform::userAgent(), this);
|
||||
|
@ -251,7 +251,7 @@ void xmrig::DonateStrategy::idle(double min, double max)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::DonateStrategy::setJob(Client *client, const Job &job)
|
||||
void xmrig::DonateStrategy::setJob(IClient *client, const Job &job)
|
||||
{
|
||||
if (isActive()) {
|
||||
m_listener->onJob(this, client, job);
|
||||
|
@ -259,7 +259,7 @@ void xmrig::DonateStrategy::setJob(Client *client, const Job &job)
|
|||
}
|
||||
|
||||
|
||||
void xmrig::DonateStrategy::setResult(Client *client, const SubmitResult &result, const char *error)
|
||||
void xmrig::DonateStrategy::setResult(IClient *client, const SubmitResult &result, const char *error)
|
||||
{
|
||||
m_listener->onResultAccepted(this, client, result, error);
|
||||
}
|
||||
|
|
|
@ -51,13 +51,13 @@ public:
|
|||
~DonateStrategy() 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 {}
|
||||
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 *, IClient *client, const Job &job) override { setJob(client, job); }
|
||||
inline void onJobReceived(IClient *client, const Job &job, const rapidjson::Value &) override { setJob(client, job); }
|
||||
inline void onResultAccepted(IClient *client, const SubmitResult &result, const char *error) override { setResult(client, result, error); }
|
||||
inline void onResultAccepted(IStrategy *, IClient *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;
|
||||
|
@ -65,12 +65,12 @@ protected:
|
|||
void stop() override;
|
||||
void tick(uint64_t now) override;
|
||||
|
||||
void onActive(IStrategy *strategy, Client *client) override;
|
||||
void onActive(IStrategy *strategy, IClient *client) override;
|
||||
void onPause(IStrategy *strategy) 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 onClose(IClient *client, int failures) override;
|
||||
void onLogin(IClient *client, rapidjson::Document &doc, rapidjson::Value ¶ms) override;
|
||||
void onLoginSuccess(IClient *client) override;
|
||||
|
||||
void onTimer(const Timer *timer) override;
|
||||
|
||||
|
@ -87,8 +87,8 @@ private:
|
|||
|
||||
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 setJob(IClient *client, const Job &job);
|
||||
void setResult(IClient *client, const SubmitResult &result, const char *error);
|
||||
void setState(State state);
|
||||
|
||||
bool m_tls;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue