Added classes Process and Arguments.
This commit is contained in:
parent
0450c31449
commit
f4d2dec628
18 changed files with 373 additions and 82 deletions
|
@ -24,6 +24,8 @@ set(HEADERS
|
||||||
src/base/io/Watcher.h
|
src/base/io/Watcher.h
|
||||||
src/base/kernel/interfaces/IConfigListener.h
|
src/base/kernel/interfaces/IConfigListener.h
|
||||||
src/base/kernel/interfaces/IWatcherListener.h
|
src/base/kernel/interfaces/IWatcherListener.h
|
||||||
|
src/base/kernel/Process.h
|
||||||
|
src/base/tools/Arguments.h
|
||||||
src/base/tools/Handle.h
|
src/base/tools/Handle.h
|
||||||
src/base/tools/String.h
|
src/base/tools/String.h
|
||||||
src/common/config/CommonConfig.h
|
src/common/config/CommonConfig.h
|
||||||
|
@ -104,6 +106,8 @@ set(SOURCES
|
||||||
src/App.cpp
|
src/App.cpp
|
||||||
src/base/io/Json.cpp
|
src/base/io/Json.cpp
|
||||||
src/base/io/Watcher.cpp
|
src/base/io/Watcher.cpp
|
||||||
|
src/base/kernel/Process.cpp
|
||||||
|
src/base/tools/Arguments.cpp
|
||||||
src/base/tools/Handle.cpp
|
src/base/tools/Handle.cpp
|
||||||
src/base/tools/String.cpp
|
src/base/tools/String.cpp
|
||||||
src/common/config/CommonConfig.cpp
|
src/common/config/CommonConfig.cpp
|
||||||
|
|
24
src/App.cpp
24
src/App.cpp
|
@ -5,7 +5,9 @@
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
* Copyright 2016-2018 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright 2018 Lee Clagett <https://github.com/vtnerd>
|
||||||
|
* Copyright 2018 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -47,18 +49,18 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
App *App::m_self = nullptr;
|
xmrig::App *xmrig::App::m_self = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
App::App(int argc, char **argv) :
|
xmrig::App::App(Process *process) :
|
||||||
m_console(nullptr),
|
m_console(nullptr),
|
||||||
m_httpd(nullptr)
|
m_httpd(nullptr)
|
||||||
{
|
{
|
||||||
m_self = this;
|
m_self = this;
|
||||||
|
|
||||||
m_controller = new xmrig::Controller();
|
m_controller = new xmrig::Controller(process);
|
||||||
if (m_controller->init(argc, argv) != 0) {
|
if (m_controller->init() != 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +74,7 @@ App::App(int argc, char **argv) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
App::~App()
|
xmrig::App::~App()
|
||||||
{
|
{
|
||||||
uv_tty_reset_mode();
|
uv_tty_reset_mode();
|
||||||
|
|
||||||
|
@ -85,7 +87,7 @@ App::~App()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int App::exec()
|
int xmrig::App::exec()
|
||||||
{
|
{
|
||||||
if (m_controller->isDone()) {
|
if (m_controller->isDone()) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -139,7 +141,7 @@ int App::exec()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void App::onConsoleCommand(char command)
|
void xmrig::App::onConsoleCommand(char command)
|
||||||
{
|
{
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case 'h':
|
case 'h':
|
||||||
|
@ -174,7 +176,7 @@ void App::onConsoleCommand(char command)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void App::close()
|
void xmrig::App::close()
|
||||||
{
|
{
|
||||||
m_controller->network()->stop();
|
m_controller->network()->stop();
|
||||||
Workers::stop();
|
Workers::stop();
|
||||||
|
@ -183,12 +185,12 @@ void App::close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void App::release()
|
void xmrig::App::release()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void App::onSignal(uv_signal_t *handle, int signum)
|
void xmrig::App::onSignal(uv_signal_t *handle, int signum)
|
||||||
{
|
{
|
||||||
switch (signum)
|
switch (signum)
|
||||||
{
|
{
|
||||||
|
|
24
src/App.h
24
src/App.h
|
@ -5,7 +5,9 @@
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
* Copyright 2016-2018 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright 2018 Lee Clagett <https://github.com/vtnerd>
|
||||||
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -21,8 +23,8 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __APP_H__
|
#ifndef XMRIG_APP_H
|
||||||
#define __APP_H__
|
#define XMRIG_APP_H
|
||||||
|
|
||||||
|
|
||||||
#include <uv.h>
|
#include <uv.h>
|
||||||
|
@ -34,19 +36,20 @@
|
||||||
class Console;
|
class Console;
|
||||||
class Httpd;
|
class Httpd;
|
||||||
class Network;
|
class Network;
|
||||||
class Options;
|
|
||||||
|
|
||||||
|
|
||||||
namespace xmrig {
|
namespace xmrig {
|
||||||
class Controller;
|
|
||||||
}
|
|
||||||
|
class Controller;
|
||||||
|
class Process;
|
||||||
|
|
||||||
|
|
||||||
class App : public IConsoleListener
|
class App : public IConsoleListener
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
App(int argc, char **argv);
|
App(Process *process);
|
||||||
~App();
|
~App() override;
|
||||||
|
|
||||||
int exec();
|
int exec();
|
||||||
|
|
||||||
|
@ -71,4 +74,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif /* __APP_H__ */
|
} /* namespace xmrig */
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* XMRIG_APP_H */
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
* Copyright 2016-2018 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
#include "core/Controller.h"
|
#include "core/Controller.h"
|
||||||
|
|
||||||
|
|
||||||
void App::background()
|
void xmrig::App::background()
|
||||||
{
|
{
|
||||||
signal(SIGPIPE, SIG_IGN);
|
signal(SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
* Copyright 2016-2018 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -31,7 +32,7 @@
|
||||||
#include "core/Config.h"
|
#include "core/Config.h"
|
||||||
|
|
||||||
|
|
||||||
void App::background()
|
void xmrig::App::background()
|
||||||
{
|
{
|
||||||
if (!m_controller->config()->isBackground()) {
|
if (!m_controller->config()->isBackground()) {
|
||||||
return;
|
return;
|
||||||
|
|
101
src/base/kernel/Process.cpp
Normal file
101
src/base/kernel/Process.cpp
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/* XMRig
|
||||||
|
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com>
|
||||||
|
* Copyright 2012-2014 pooler <pooler@litecoinpool.org>
|
||||||
|
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
||||||
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <uv.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "base/kernel/Process.h"
|
||||||
|
|
||||||
|
|
||||||
|
static size_t location(xmrig::Process::Location location, char *buf, size_t max)
|
||||||
|
{
|
||||||
|
using namespace xmrig;
|
||||||
|
|
||||||
|
size_t size = max;
|
||||||
|
if (location == Process::ExeLocation) {
|
||||||
|
return uv_exepath(buf, &size) < 0 ? 0 : size;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location == Process::CwdLocation) {
|
||||||
|
return uv_cwd(buf, &size) < 0 ? 0 : size;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xmrig::Process::Process(int argc, char **argv) :
|
||||||
|
m_arguments(argc, argv)
|
||||||
|
{
|
||||||
|
srand(static_cast<unsigned int>(static_cast<uintptr_t>(time(nullptr)) ^ reinterpret_cast<uintptr_t>(this)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xmrig::Process::~Process()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xmrig::String xmrig::Process::location(Location location, const char *fileName) const
|
||||||
|
{
|
||||||
|
constexpr const size_t max = 520;
|
||||||
|
|
||||||
|
char *buf = new char[max]();
|
||||||
|
size_t size = ::location(location, buf, max);
|
||||||
|
|
||||||
|
if (size == 0) {
|
||||||
|
delete [] buf;
|
||||||
|
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fileName == nullptr) {
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location == ExeLocation) {
|
||||||
|
char *p = strrchr(buf, kDirSeparator);
|
||||||
|
|
||||||
|
if (p == nullptr) {
|
||||||
|
delete [] buf;
|
||||||
|
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
size = static_cast<size_t>(p - buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((size + strlen(fileName) + 2) >= max) {
|
||||||
|
delete [] buf;
|
||||||
|
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
buf[size] = kDirSeparator;
|
||||||
|
strcpy(buf + size + 1, fileName);
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
64
src/base/kernel/Process.h
Normal file
64
src/base/kernel/Process.h
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/* XMRig
|
||||||
|
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com>
|
||||||
|
* Copyright 2012-2014 pooler <pooler@litecoinpool.org>
|
||||||
|
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
||||||
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XMRIG_PROCESS_H
|
||||||
|
#define XMRIG_PROCESS_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "base/tools/Arguments.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace xmrig {
|
||||||
|
|
||||||
|
|
||||||
|
class Process
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum Location {
|
||||||
|
ExeLocation,
|
||||||
|
CwdLocation
|
||||||
|
};
|
||||||
|
|
||||||
|
# ifdef WIN32
|
||||||
|
constexpr const static char kDirSeparator = '\\';
|
||||||
|
# else
|
||||||
|
constexpr const static char kDirSeparator = '/';
|
||||||
|
# endif
|
||||||
|
|
||||||
|
Process(int argc, char **argv);
|
||||||
|
~Process();
|
||||||
|
|
||||||
|
String location(Location location, const char *fileName = nullptr) const;
|
||||||
|
|
||||||
|
inline const Arguments &arguments() const { return m_arguments; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Arguments m_arguments;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} /* namespace xmrig */
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* XMRIG_PROCESS_H */
|
76
src/base/tools/Arguments.cpp
Normal file
76
src/base/tools/Arguments.cpp
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
/* XMRig
|
||||||
|
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com>
|
||||||
|
* Copyright 2012-2014 pooler <pooler@litecoinpool.org>
|
||||||
|
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
||||||
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <uv.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "base/tools/Arguments.h"
|
||||||
|
|
||||||
|
|
||||||
|
xmrig::Arguments::Arguments(int argc, char **argv) :
|
||||||
|
m_argv(argv),
|
||||||
|
m_argc(argc)
|
||||||
|
{
|
||||||
|
uv_setup_args(argc, argv);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < static_cast<size_t>(argc); ++i) {
|
||||||
|
add(argv[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool xmrig::Arguments::hasArg(const char *name) const
|
||||||
|
{
|
||||||
|
if (m_argc == 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::find(m_data.begin() + 1, m_data.end(), name) != m_data.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void xmrig::Arguments::add(const char *arg)
|
||||||
|
{
|
||||||
|
if (arg == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const size_t size = strlen(arg);
|
||||||
|
if (size > 4 && arg[0] == '-' && arg[1] == '-') {
|
||||||
|
const char *p = strstr(arg, "=");
|
||||||
|
|
||||||
|
if (p) {
|
||||||
|
const size_t keySize = static_cast<size_t>(p - arg);
|
||||||
|
|
||||||
|
m_data.push_back(String(arg, keySize));
|
||||||
|
m_data.push_back(arg + keySize + 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_data.push_back(arg);
|
||||||
|
}
|
61
src/base/tools/Arguments.h
Normal file
61
src/base/tools/Arguments.h
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/* XMRig
|
||||||
|
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com>
|
||||||
|
* Copyright 2012-2014 pooler <pooler@litecoinpool.org>
|
||||||
|
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
||||||
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XMRIG_ARGUMENTS_H
|
||||||
|
#define XMRIG_ARGUMENTS_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
|
#include "base/tools/String.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace xmrig {
|
||||||
|
|
||||||
|
|
||||||
|
class Arguments
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Arguments(int argc, char **argv);
|
||||||
|
|
||||||
|
bool hasArg(const char *name) const;
|
||||||
|
|
||||||
|
inline char **argv() const { return m_argv; }
|
||||||
|
inline const std::vector<String> &data() const { return m_data; }
|
||||||
|
inline int argc() const { return m_argc; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void add(const char *arg);
|
||||||
|
|
||||||
|
char **m_argv;
|
||||||
|
int m_argc;
|
||||||
|
std::vector<String> m_data;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} /* namespace xmrig */
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* XMRIG_ARGUMENTS_H */
|
|
@ -5,8 +5,8 @@
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
* Copyright 2018 SChernykh <https://github.com/SChernykh>
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
* Copyright 2016-2018 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -36,40 +36,9 @@
|
||||||
#include "Platform.h"
|
#include "Platform.h"
|
||||||
|
|
||||||
|
|
||||||
char Platform::m_defaultConfigName[520] = { 0 };
|
|
||||||
xmrig::String Platform::m_userAgent;
|
xmrig::String Platform::m_userAgent;
|
||||||
|
|
||||||
|
|
||||||
const char *Platform::defaultConfigName()
|
|
||||||
{
|
|
||||||
size_t size = 520;
|
|
||||||
|
|
||||||
if (*m_defaultConfigName) {
|
|
||||||
return m_defaultConfigName;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uv_exepath(m_defaultConfigName, &size) < 0) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size < 500) {
|
|
||||||
# ifdef WIN32
|
|
||||||
char *p = strrchr(m_defaultConfigName, '\\');
|
|
||||||
# else
|
|
||||||
char *p = strrchr(m_defaultConfigName, '/');
|
|
||||||
# endif
|
|
||||||
|
|
||||||
if (p) {
|
|
||||||
strcpy(p + 1, "config.json");
|
|
||||||
return m_defaultConfigName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*m_defaultConfigName = '\0';
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Platform::init(const char *userAgent)
|
void Platform::init(const char *userAgent)
|
||||||
{
|
{
|
||||||
# ifndef XMRIG_NO_TLS
|
# ifndef XMRIG_NO_TLS
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
* Copyright 2018 SChernykh <https://github.com/SChernykh>
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
* Copyright 2016-2018 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -36,19 +36,17 @@ class Platform
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static bool setThreadAffinity(uint64_t cpu_id);
|
static bool setThreadAffinity(uint64_t cpu_id);
|
||||||
static const char *defaultConfigName();
|
|
||||||
static uint32_t setTimerResolution(uint32_t resolution);
|
static uint32_t setTimerResolution(uint32_t resolution);
|
||||||
static void init(const char *userAgent);
|
static void init(const char *userAgent);
|
||||||
static void restoreTimerResolution();
|
static void restoreTimerResolution();
|
||||||
static void setProcessPriority(int priority);
|
static void setProcessPriority(int priority);
|
||||||
static void setThreadPriority(int priority);
|
static void setThreadPriority(int priority);
|
||||||
|
|
||||||
static inline const char *userAgent() { return m_userAgent.data(); }
|
static inline const char *userAgent() { return m_userAgent; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static char *createUserAgent();
|
static char *createUserAgent();
|
||||||
|
|
||||||
static char m_defaultConfigName[520];
|
|
||||||
static xmrig::String m_userAgent;
|
static xmrig::String m_userAgent;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
|
|
||||||
#include "base/io/Json.h"
|
#include "base/io/Json.h"
|
||||||
#include "base/kernel/interfaces/IConfigListener.h"
|
#include "base/kernel/interfaces/IConfigListener.h"
|
||||||
|
#include "base/kernel/Process.h"
|
||||||
#include "common/config/ConfigLoader.h"
|
#include "common/config/ConfigLoader.h"
|
||||||
#include "common/config/ConfigWatcher.h"
|
#include "common/config/ConfigWatcher.h"
|
||||||
#include "common/interfaces/IConfig.h"
|
#include "common/interfaces/IConfig.h"
|
||||||
|
@ -144,13 +145,15 @@ bool xmrig::ConfigLoader::reload(xmrig::IConfig *oldConfig, const char *json)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
xmrig::IConfig *xmrig::ConfigLoader::load(int argc, char **argv, IConfigCreator *creator, IConfigListener *listener)
|
xmrig::IConfig *xmrig::ConfigLoader::load(Process *process, IConfigCreator *creator, IConfigListener *listener)
|
||||||
{
|
{
|
||||||
m_creator = creator;
|
m_creator = creator;
|
||||||
m_listener = listener;
|
m_listener = listener;
|
||||||
|
|
||||||
xmrig::IConfig *config = m_creator->create();
|
xmrig::IConfig *config = m_creator->create();
|
||||||
int key;
|
int key;
|
||||||
|
int argc = process->arguments().argc();
|
||||||
|
char **argv = process->arguments().argv();
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
key = getopt_long(argc, argv, short_options, options, nullptr);
|
key = getopt_long(argc, argv, short_options, options, nullptr);
|
||||||
|
@ -174,7 +177,7 @@ xmrig::IConfig *xmrig::ConfigLoader::load(int argc, char **argv, IConfigCreator
|
||||||
delete config;
|
delete config;
|
||||||
|
|
||||||
config = m_creator->create();
|
config = m_creator->create();
|
||||||
loadFromFile(config, Platform::defaultConfigName());
|
loadFromFile(config, process->location(Process::ExeLocation, "config.json"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config->finalize()) {
|
if (!config->finalize()) {
|
||||||
|
|
|
@ -42,6 +42,7 @@ class ConfigWatcher;
|
||||||
class IConfigCreator;
|
class IConfigCreator;
|
||||||
class IConfigListener;
|
class IConfigListener;
|
||||||
class IConfig;
|
class IConfig;
|
||||||
|
class Process;
|
||||||
|
|
||||||
|
|
||||||
class ConfigLoader
|
class ConfigLoader
|
||||||
|
@ -51,7 +52,7 @@ public:
|
||||||
static bool loadFromJSON(IConfig *config, const char *json);
|
static bool loadFromJSON(IConfig *config, const char *json);
|
||||||
static bool loadFromJSON(IConfig *config, const rapidjson::Document &doc);
|
static bool loadFromJSON(IConfig *config, const rapidjson::Document &doc);
|
||||||
static bool reload(IConfig *oldConfig, const char *json);
|
static bool reload(IConfig *oldConfig, const char *json);
|
||||||
static IConfig *load(int argc, char **argv, IConfigCreator *creator, IConfigListener *listener);
|
static IConfig *load(Process *process, IConfigCreator *creator, IConfigListener *listener);
|
||||||
static void release();
|
static void release();
|
||||||
|
|
||||||
static inline bool isDone() { return m_done; }
|
static inline bool isDone() { return m_done; }
|
||||||
|
|
|
@ -139,9 +139,9 @@ void xmrig::Config::getJSON(rapidjson::Document &doc) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
xmrig::Config *xmrig::Config::load(int argc, char **argv, IConfigListener *listener)
|
xmrig::Config *xmrig::Config::load(Process *process, IConfigListener *listener)
|
||||||
{
|
{
|
||||||
return static_cast<Config*>(ConfigLoader::load(argc, argv, new ConfigCreator(), listener));
|
return static_cast<Config*>(ConfigLoader::load(process, new ConfigCreator(), listener));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,16 +35,13 @@
|
||||||
#include "workers/CpuThread.h"
|
#include "workers/CpuThread.h"
|
||||||
|
|
||||||
|
|
||||||
class Addr;
|
|
||||||
class Url;
|
|
||||||
|
|
||||||
|
|
||||||
namespace xmrig {
|
namespace xmrig {
|
||||||
|
|
||||||
|
|
||||||
class ConfigLoader;
|
class ConfigLoader;
|
||||||
class IThread;
|
class IThread;
|
||||||
class IConfigListener;
|
class IConfigListener;
|
||||||
|
class Process;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,7 +82,7 @@ public:
|
||||||
inline int64_t affinity() const { return m_threads.mask; }
|
inline int64_t affinity() const { return m_threads.mask; }
|
||||||
inline ThreadsMode threadsMode() const { return m_threads.mode; }
|
inline ThreadsMode threadsMode() const { return m_threads.mode; }
|
||||||
|
|
||||||
static Config *load(int argc, char **argv, IConfigListener *listener);
|
static Config *load(Process *process, IConfigListener *listener);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool finalize() override;
|
bool finalize() override;
|
||||||
|
|
|
@ -46,8 +46,9 @@
|
||||||
class xmrig::ControllerPrivate
|
class xmrig::ControllerPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline ControllerPrivate() :
|
inline ControllerPrivate(Process *process) :
|
||||||
network(nullptr),
|
network(nullptr),
|
||||||
|
process(process),
|
||||||
config(nullptr)
|
config(nullptr)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
@ -60,13 +61,14 @@ public:
|
||||||
|
|
||||||
|
|
||||||
Network *network;
|
Network *network;
|
||||||
|
Process *process;
|
||||||
std::vector<xmrig::IControllerListener *> listeners;
|
std::vector<xmrig::IControllerListener *> listeners;
|
||||||
xmrig::Config *config;
|
xmrig::Config *config;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
xmrig::Controller::Controller()
|
xmrig::Controller::Controller(Process *process)
|
||||||
: d_ptr(new ControllerPrivate())
|
: d_ptr(new ControllerPrivate(process))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,11 +101,11 @@ xmrig::Config *xmrig::Controller::config() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int xmrig::Controller::init(int argc, char **argv)
|
int xmrig::Controller::init()
|
||||||
{
|
{
|
||||||
Cpu::init();
|
Cpu::init();
|
||||||
|
|
||||||
d_ptr->config = xmrig::Config::load(argc, argv, this);
|
d_ptr->config = xmrig::Config::load(d_ptr->process, this);
|
||||||
if (!d_ptr->config) {
|
if (!d_ptr->config) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,18 +39,19 @@ namespace xmrig {
|
||||||
class Config;
|
class Config;
|
||||||
class ControllerPrivate;
|
class ControllerPrivate;
|
||||||
class IControllerListener;
|
class IControllerListener;
|
||||||
|
class Process;
|
||||||
|
|
||||||
|
|
||||||
class Controller : public IConfigListener
|
class Controller : public IConfigListener
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Controller();
|
Controller(Process *process);
|
||||||
~Controller() override;
|
~Controller() override;
|
||||||
|
|
||||||
bool isDone() const;
|
bool isDone() const;
|
||||||
bool isReady() const;
|
bool isReady() const;
|
||||||
Config *config() const;
|
Config *config() const;
|
||||||
int init(int argc, char **argv);
|
int init();
|
||||||
Network *network() const;
|
Network *network() const;
|
||||||
void addListener(IControllerListener *listener);
|
void addListener(IControllerListener *listener);
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
|
||||||
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
|
||||||
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
|
||||||
* Copyright 2016-2017 XMRig <support@xmrig.com>
|
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
|
||||||
*
|
* Copyright 2018-2019 SChernykh <https://github.com/SChernykh>
|
||||||
|
* Copyright 2016-2019 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -22,10 +23,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "App.h"
|
#include "App.h"
|
||||||
|
#include "base/kernel/Process.h"
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
App app(argc, argv);
|
xmrig::Process process(argc, argv);
|
||||||
|
|
||||||
|
xmrig::App app(&process);
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue