replace new/delete with sp

This commit is contained in:
4ertus2 2024-10-20 08:24:09 +03:00
parent e32731b60b
commit ab5be0b773
71 changed files with 271 additions and 387 deletions

View file

@ -29,13 +29,13 @@
namespace xmrig {
static Storage<DnsUvBackend> *storage = nullptr;
static std::shared_ptr<Storage<DnsUvBackend>> storage = nullptr;
Storage<DnsUvBackend> &DnsUvBackend::getStorage()
{
if (storage == nullptr) {
storage = new Storage<DnsUvBackend>();
if (!storage) {
storage = std::make_shared<Storage<DnsUvBackend>>();
}
return *storage;
@ -67,8 +67,7 @@ xmrig::DnsUvBackend::~DnsUvBackend()
storage->release(m_key);
if (storage->isEmpty()) {
delete storage;
storage = nullptr;
storage.reset();
}
}

View file

@ -87,14 +87,13 @@ xmrig::DaemonClient::DaemonClient(int id, IClientListener *listener) :
BaseClient(id, listener)
{
m_httpListener = std::make_shared<HttpListener>(this);
m_timer = new Timer(this);
m_timer = std::make_shared<Timer>(this);
m_key = m_storage.add(this);
}
xmrig::DaemonClient::~DaemonClient()
{
delete m_timer;
delete m_ZMQSocket;
}
@ -104,9 +103,6 @@ void xmrig::DaemonClient::deleteLater()
if (m_pool.zmq_port() >= 0) {
ZMQClose(true);
}
else {
delete this;
}
}

View file

@ -107,7 +107,7 @@ private:
uint64_t m_jobSteadyMs = 0;
String m_tlsFingerprint;
String m_tlsVersion;
Timer *m_timer;
std::shared_ptr<Timer> m_timer;
uint64_t m_blocktemplateRequestHeight = 0;
WalletAddress m_walletAddress;

View file

@ -221,42 +221,42 @@ bool xmrig::Pool::isEqual(const Pool &other) const
}
xmrig::IClient *xmrig::Pool::createClient(int id, IClientListener *listener) const
std::shared_ptr<xmrig::IClient> xmrig::Pool::createClient(int id, IClientListener* listener) const
{
IClient *client = nullptr;
std::shared_ptr<xmrig::IClient> client;
if (m_mode == MODE_POOL) {
# if defined XMRIG_ALGO_KAWPOW || defined XMRIG_ALGO_GHOSTRIDER
const uint32_t f = m_algorithm.family();
if ((f == Algorithm::KAWPOW) || (f == Algorithm::GHOSTRIDER) || (m_coin == Coin::RAVEN)) {
client = new EthStratumClient(id, Platform::userAgent(), listener);
client = std::make_shared<EthStratumClient>(id, Platform::userAgent(), listener);
}
else
# endif
{
client = new Client(id, Platform::userAgent(), listener);
client = std::make_shared<Client>(id, Platform::userAgent(), listener);
}
}
# ifdef XMRIG_FEATURE_HTTP
else if (m_mode == MODE_DAEMON) {
client = new DaemonClient(id, listener);
client = std::make_shared<DaemonClient>(id, listener);
}
else if (m_mode == MODE_SELF_SELECT) {
client = new SelfSelectClient(id, Platform::userAgent(), listener, m_submitToOrigin);
client = std::make_shared<SelfSelectClient>(id, Platform::userAgent(), listener, m_submitToOrigin);
}
# endif
# if defined XMRIG_ALGO_KAWPOW || defined XMRIG_ALGO_GHOSTRIDER
else if (m_mode == MODE_AUTO_ETH) {
client = new AutoClient(id, Platform::userAgent(), listener);
client = std::make_shared<AutoClient>(id, Platform::userAgent(), listener);
}
# endif
# ifdef XMRIG_FEATURE_BENCHMARK
else if (m_mode == MODE_BENCHMARK) {
client = new BenchClient(m_benchmark, listener);
client = std::make_shared<BenchClient>(m_benchmark, listener);
}
# endif
assert(client != nullptr);
assert(client);
if (client) {
client->setPool(*this);

View file

@ -127,7 +127,7 @@ public:
bool isEnabled() const;
bool isEqual(const Pool &other) const;
IClient *createClient(int id, IClientListener *listener) const;
std::shared_ptr<IClient> createClient(int id, IClientListener *listener) const;
rapidjson::Value toJSON(rapidjson::Document &doc) const;
std::string printableName() const;

View file

@ -80,17 +80,17 @@ int xmrig::Pools::donateLevel() const
}
xmrig::IStrategy *xmrig::Pools::createStrategy(IStrategyListener *listener) const
std::shared_ptr<xmrig::IStrategy> xmrig::Pools::createStrategy(IStrategyListener *listener) const
{
if (active() == 1) {
for (const Pool &pool : m_data) {
if (pool.isEnabled()) {
return new SinglePoolStrategy(pool, retryPause(), retries(), listener);
return std::make_shared<SinglePoolStrategy>(pool, retryPause(), retries(), listener);
}
}
}
auto strategy = new FailoverStrategy(retryPause(), retries(), listener);
auto strategy = std::make_shared<FailoverStrategy>(retryPause(), retries(), listener);
for (const Pool &pool : m_data) {
if (pool.isEnabled()) {
strategy->add(pool);
@ -154,7 +154,7 @@ void xmrig::Pools::load(const IJsonReader &reader)
Pool pool(value);
if (pool.isValid()) {
m_data.push_back(std::move(pool));
m_data.emplace_back(std::move(pool));
}
}

View file

@ -73,7 +73,7 @@ public:
bool isEqual(const Pools &other) const;
int donateLevel() const;
IStrategy *createStrategy(IStrategyListener *listener) const;
std::shared_ptr<IStrategy> createStrategy(IStrategyListener *listener) const;
rapidjson::Value toJSON(rapidjson::Document &doc) const;
size_t active() const;
uint32_t benchSize() const;

View file

@ -56,13 +56,12 @@ xmrig::SelfSelectClient::SelfSelectClient(int id, const char *agent, IClientList
m_listener(listener)
{
m_httpListener = std::make_shared<HttpListener>(this);
m_client = new Client(id, agent, this);
m_client = std::make_shared<Client>(id, agent, this);
}
xmrig::SelfSelectClient::~SelfSelectClient()
{
delete m_client;
}

View file

@ -105,7 +105,7 @@ private:
bool m_active = false;
bool m_quiet = false;
const bool m_submitToOrigin;
IClient *m_client;
std::shared_ptr<IClient> m_client;
IClientListener *m_listener;
int m_retries = 5;
int64_t m_failures = 0;

View file

@ -53,7 +53,7 @@ public:
inline int64_t sequence() const override { return 0; }
inline int64_t submit(const JobResult &) override { return 0; }
inline void connect(const Pool &pool) override { setPool(pool); }
inline void deleteLater() override { delete this; }
inline void deleteLater() override {}
inline void setAlgo(const Algorithm &algo) override {}
inline void setEnabled(bool enabled) override {}
inline void setProxy(const ProxyUrl &proxy) override {}

View file

@ -47,7 +47,7 @@ xmrig::FailoverStrategy::FailoverStrategy(int retryPause, int retries, IStrategy
xmrig::FailoverStrategy::~FailoverStrategy()
{
for (IClient *client : m_pools) {
for (auto& client : m_pools) {
client->deleteLater();
}
}
@ -55,7 +55,7 @@ xmrig::FailoverStrategy::~FailoverStrategy()
void xmrig::FailoverStrategy::add(const Pool &pool)
{
IClient *client = pool.createClient(static_cast<int>(m_pools.size()), this);
std::shared_ptr<IClient> client = pool.createClient(static_cast<int>(m_pools.size()), this);
client->setRetries(m_retries);
client->setRetryPause(m_retryPause * 1000);
@ -93,7 +93,7 @@ void xmrig::FailoverStrategy::resume()
void xmrig::FailoverStrategy::setAlgo(const Algorithm &algo)
{
for (IClient *client : m_pools) {
for (auto& client : m_pools) {
client->setAlgo(algo);
}
}
@ -101,7 +101,7 @@ void xmrig::FailoverStrategy::setAlgo(const Algorithm &algo)
void xmrig::FailoverStrategy::setProxy(const ProxyUrl &proxy)
{
for (IClient *client : m_pools) {
for (auto& client : m_pools) {
client->setProxy(proxy);
}
}
@ -109,7 +109,7 @@ void xmrig::FailoverStrategy::setProxy(const ProxyUrl &proxy)
void xmrig::FailoverStrategy::stop()
{
for (auto &pool : m_pools) {
for (auto& pool : m_pools) {
pool->disconnect();
}
@ -122,7 +122,7 @@ void xmrig::FailoverStrategy::stop()
void xmrig::FailoverStrategy::tick(uint64_t now)
{
for (IClient *client : m_pools) {
for (auto& client : m_pools) {
client->tick(now);
}
}

View file

@ -49,7 +49,7 @@ public:
protected:
inline bool isActive() const override { return m_active >= 0; }
inline IClient *client() const override { return isActive() ? active() : m_pools[m_index]; }
inline IClient* client() const override { return isActive() ? active() : m_pools[m_index].get(); }
int64_t submit(const JobResult &result) override;
void connect() override;
@ -67,7 +67,7 @@ protected:
void onVerifyAlgorithm(const IClient *client, const Algorithm &algorithm, bool *ok) override;
private:
inline IClient *active() const { return m_pools[static_cast<size_t>(m_active)]; }
inline IClient* active() const { return m_pools[static_cast<size_t>(m_active)].get(); }
const bool m_quiet;
const int m_retries;
@ -75,7 +75,7 @@ private:
int m_active = -1;
IStrategyListener *m_listener;
size_t m_index = 0;
std::vector<IClient*> m_pools;
std::vector<std::shared_ptr<IClient>> m_pools;
};

View file

@ -66,7 +66,7 @@ void xmrig::SinglePoolStrategy::resume()
return;
}
m_listener->onJob(this, m_client, m_client->job(), rapidjson::Value(rapidjson::kNullType));
m_listener->onJob(this, m_client.get(), m_client->job(), rapidjson::Value(rapidjson::kNullType));
}

View file

@ -49,7 +49,7 @@ public:
protected:
inline bool isActive() const override { return m_active; }
inline IClient *client() const override { return m_client; }
inline IClient* client() const override { return m_client.get(); }
int64_t submit(const JobResult &result) override;
void connect() override;
@ -68,7 +68,7 @@ protected:
private:
bool m_active;
IClient *m_client;
std::shared_ptr<IClient> m_client;
IStrategyListener *m_listener;
};

View file

@ -23,22 +23,23 @@
#include <cassert>
#include <memory>
#include <uv.h>
namespace xmrig {
static MemPool<XMRIG_NET_BUFFER_CHUNK_SIZE, XMRIG_NET_BUFFER_INIT_CHUNKS> *pool = nullptr;
static std::shared_ptr<MemPool<XMRIG_NET_BUFFER_CHUNK_SIZE, XMRIG_NET_BUFFER_INIT_CHUNKS>> pool;
inline MemPool<XMRIG_NET_BUFFER_CHUNK_SIZE, XMRIG_NET_BUFFER_INIT_CHUNKS> *getPool()
{
if (!pool) {
pool = new MemPool<XMRIG_NET_BUFFER_CHUNK_SIZE, XMRIG_NET_BUFFER_INIT_CHUNKS>();
pool = std::make_shared<MemPool<XMRIG_NET_BUFFER_CHUNK_SIZE, XMRIG_NET_BUFFER_INIT_CHUNKS>>();
}
return pool;
return pool.get();
}
@ -59,8 +60,7 @@ void xmrig::NetBuffer::destroy()
assert(pool->freeSize() == pool->size());
delete pool;
pool = nullptr;
pool.reset();
}