wowlet/src/utils/xmrig.h

63 lines
1.4 KiB
C
Raw Normal View History

// SPDX-License-Identifier: BSD-3-Clause
2020-12-26 19:56:06 +00:00
// Copyright (c) 2020-2021, The Monero Project.
2021-03-30 09:52:29 +00:00
#ifndef WOWLET_XMRIG_H
#define WOWLET_XMRIG_H
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <QRegExp>
#include <QtNetwork>
#include <QApplication>
#include <QMainWindow>
#include "utils/childproc.h"
2022-03-21 17:12:11 +00:00
enum DaemonMiningState {
idle = 0,
startup,
syncing,
mining
};
class AppContext;
class XmRig : public QObject
{
Q_OBJECT
public:
explicit XmRig(const QString &configDir, QObject *parent = nullptr);
void prepare();
bool start(const QString &path, int threads);
void stop();
2022-03-21 17:12:11 +00:00
DaemonMiningState daemonMiningState = DaemonMiningState::idle;
signals:
void error(const QString &msg);
void output(const QByteArray &data);
void blockReward();
2022-03-21 17:12:11 +00:00
void syncStatus(unsigned int from, unsigned int to, unsigned int pct);
void hashrate(const QString &rate);
2022-03-21 17:12:11 +00:00
void daemonStateChanged(DaemonMiningState state);
void uptimeChanged(QString &uptime);
private slots:
2022-03-21 17:12:11 +00:00
void onProcessStateChanged(QProcess::ProcessState);
void onHandleProcessOutput();
void onHandleProcessError(QProcess::ProcessError error);
private:
2022-03-21 17:12:11 +00:00
void changeDaemonState(DaemonMiningState state);
ChildProcess m_process;
AppContext *m_ctx;
QTimer *m_statusTimer;
2022-03-21 17:12:11 +00:00
unsigned int m_to;
unsigned int m_from;
};
2021-03-30 09:52:29 +00:00
#endif //WOWLET_XMRIG_H