Allow the user to give longer cloud timeout on the command line

When stuck in areas with really bad internet 5 seconds may not be enough,
but making the timeout longer in general seems the wrong way to go. So
keep the default 5 seconds but allow the user to override that with
subsurface --cloud-timeout=NN

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-07-23 12:54:30 +09:00
parent 9815eaf1ed
commit 177e21076b
3 changed files with 13 additions and 4 deletions

View file

@ -39,8 +39,8 @@ bool CheckCloudConnection::checkServer()
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
connect(reply, &QNetworkReply::sslErrors, this, &CheckCloudConnection::sslErrors);
for (int seconds = 1; seconds <= 5; seconds++) {
timer.start(1000); // wait five seconds
for (int seconds = 1; seconds <= prefs.cloud_timeout; seconds++) {
timer.start(1000); // wait the given number of seconds (default 5)
loop.exec();
if (timer.isActive()) {
// didn't time out, did we get the right response?
@ -54,7 +54,7 @@ bool CheckCloudConnection::checkServer()
git_storage_update_progress(false, "successfully checked cloud connection");
return true;
}
} else if (seconds < 5) {
} else if (seconds < prefs.cloud_timeout) {
QString text = QString("waited %1 sec for cloud connetion").arg(seconds);
git_storage_update_progress(false, qPrintable(text));
} else {

View file

@ -132,6 +132,7 @@ struct preferences {
int time_threshold;
int distance_threshold;
bool git_local_only;
short cloud_timeout;
locale_prefs_t locale; //: TODO: move the rest of locale based info here.
};
enum unit_system_values {

View file

@ -86,7 +86,8 @@ struct preferences default_prefs = {
.deco_mode = BUEHLMANN,
.conservatism_level = 3,
.distance_threshold = 1000,
.time_threshold = 600
.time_threshold = 600,
.cloud_timeout = 5
};
int run_survey;
@ -206,6 +207,13 @@ void parse_argument(const char *arg)
settings_suffix = strdup(arg + sizeof("--user=") - 1);
return;
}
if (strncmp(arg, "--cloud-timeout=", sizeof("--cloud-timeout=") - 1) == 0) {
const char *timeout = arg + sizeof("--cloud-timeout=") - 1;
int to = strtol(timeout, NULL, 10);
if (0 < to && to < 60)
default_prefs.cloud_timeout = to;
return;
}
if (strcmp(arg, "--help") == 0) {
print_help();
exit(0);