Merge branch 'feature-multiple-pools' into dev

# Conflicts:
#	src/Options.cpp
This commit is contained in:
XMRig 2017-07-01 21:50:27 +03:00
commit a383eba8df
21 changed files with 907 additions and 332 deletions

View file

@ -54,7 +54,6 @@ Usage: " APP_ID " [OPTIONS]\n\
Options:\n\
-a, --algo=ALGO cryptonight (default) or cryptonight-lite\n\
-o, --url=URL URL of mining server\n\
-b, --backup-url=URL URL of backup mining server\n\
-O, --userpass=U:P username:password pair for mining server\n\
-u, --user=USERNAME username for mining server\n\
-p, --pass=PASSWORD password for mining server\n\
@ -83,14 +82,13 @@ Options:\n\
";
static char const short_options[] = "a:c:khBp:Px:r:R:s:t:T:o:u:O:v:Vb:l:S";
static char const short_options[] = "a:c:khBp:Px:r:R:s:t:T:o:u:O:v:Vl:S";
static struct option const options[] = {
{ "algo", 1, nullptr, 'a' },
{ "av", 1, nullptr, 'v' },
{ "background", 0, nullptr, 'B' },
{ "backup-url", 1, nullptr, 'b' },
{ "config", 1, nullptr, 'c' },
{ "cpu-affinity", 1, nullptr, 1020 },
{ "donate-level", 1, nullptr, 1003 },
@ -143,14 +141,10 @@ Options::Options(int argc, char **argv) :
m_background(false),
m_colors(true),
m_doubleHash(false),
m_keepAlive(false),
m_nicehash(false),
m_ready(false),
m_safe(false),
m_syslog(false),
m_logFile(nullptr),
m_pass(nullptr),
m_user(nullptr),
m_algo(0),
m_algoVariant(0),
m_donateLevel(kDonateLevel),
@ -159,10 +153,10 @@ Options::Options(int argc, char **argv) :
m_retries(5),
m_retryPause(5),
m_threads(0),
m_affinity(-1L),
m_backupUrl(nullptr),
m_url(nullptr)
m_affinity(-1L)
{
m_pools.push_back(new Url());
int key;
while (1) {
@ -181,23 +175,11 @@ Options::Options(int argc, char **argv) :
return;
}
if (!m_url) {
if (!m_pools[0]->isValid()) {
fprintf(stderr, "No pool URL supplied. Exiting.");
return;
}
if (!m_nicehash && m_url->isNicehash()) {
m_nicehash = true;
}
if (!m_user) {
m_user = strdup("x");
}
if (!m_pass) {
m_pass = strdup("x");
}
m_algoVariant = getAlgoVariant();
if (m_algoVariant == AV2_AESNI_DOUBLE || m_algoVariant == AV4_SOFT_AES_DOUBLE) {
m_doubleHash = true;
@ -219,11 +201,6 @@ Options::Options(int argc, char **argv) :
Options::~Options()
{
delete m_url;
delete m_backupUrl;
free(m_user);
free(m_pass);
}
@ -231,7 +208,6 @@ bool Options::parseArg(int key, char *arg)
{
char *p;
int v;
Url *url;
switch (key) {
case 'a': /* --algo */
@ -241,35 +217,38 @@ bool Options::parseArg(int key, char *arg)
break;
case 'O': /* --userpass */
if (!setUserpass(arg)) {
if (!m_pools.back()->setUserpass(arg)) {
return false;
}
break;
case 'o': /* --url */
url = parseUrl(arg);
if (url) {
free(m_url);
m_url = url;
if (m_pools.size() > 1 || m_pools[0]->isValid()) {
Url *url = new Url(arg);
if (url->isValid()) {
m_pools.push_back(url);
}
else {
delete url;
}
}
else {
m_pools[0]->parse(arg);
}
break;
case 'b': /* --backup-url */
url = parseUrl(arg);
if (url) {
free(m_backupUrl);
m_backupUrl = url;
if (!m_pools.back()->isValid()) {
return false;
}
break;
case 'u': /* --user */
free(m_user);
m_user = strdup(arg);
m_pools.back()->setUser(arg);
break;
case 'p': /* --pass */
free(m_pass);
m_pass = strdup(arg);
m_pools.back()->setPassword(arg);
break;
case 'l': /* --log-file */
@ -323,7 +302,7 @@ bool Options::parseArg(int key, char *arg)
break;
case 'k': /* --keepalive */
m_keepAlive = true;
m_pools.back()->setKeepAlive(true);
break;
case 'V': /* --version */
@ -374,7 +353,7 @@ bool Options::parseArg(int key, char *arg)
break;
case 1006: /* --nicehash */
m_nicehash = true;
m_pools.back()->setNicehash(true);
break;
case 1007: /* --print-time */
@ -477,25 +456,6 @@ bool Options::setAlgo(const char *algo)
}
bool Options::setUserpass(const char *userpass)
{
const char *p = strchr(userpass, ':');
if (!p) {
showUsage(1);
return false;
}
free(m_user);
free(m_pass);
m_user = static_cast<char*>(calloc(p - userpass + 1, 1));
strncpy(m_user, userpass, p - userpass);
m_pass = strdup(p + 1);
return true;
}
int Options::getAlgoVariant() const
{
# ifndef XMRIG_NO_AEON