added owncloudcmd bandwidth limit parameter (#5707)
authordheule <daniel.heule@gmail.com>
Wed, 19 Apr 2017 08:32:36 +0000 (10:32 +0200)
committerMarkus Goetz <markus@woboq.com>
Wed, 19 Apr 2017 08:32:36 +0000 (10:32 +0200)
src/cmd/cmd.cpp

index 5421b23143ba8e8d46aa215d1bdb45f1ab2e5e29..553905d8e9a61271073e4a613782e9537c7f8c70 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) by Olivier Goffart <ogoffart@owncloud.com>
  * Copyright (C) by Klaas Freitag <freitag@owncloud.com>
+ * Copyright (C) by Daniel Heule <daniel.heule@gmail.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
@@ -67,6 +68,8 @@ struct CmdOptions {
     QString unsyncedfolders;
     QString davPath;
     int restartTimes;
+    int downlimit;
+    int uplimit;
 };
 
 // we can't use csync_set_userdata because the SyncEngine sets it already.
@@ -169,6 +172,8 @@ void help()
     std::cout << "  --nonshib              Use Non Shibboleth WebDAV authentication" << std::endl;
     std::cout << "  --davpath [path]       Custom themed dav path, overrides --nonshib" << std::endl;
     std::cout << "  --max-sync-retries [n] Retries maximum n times (default to 3)" << std::endl;
+    std::cout << "  --uplimit [n]          Limit the upload speed of files to n KB/s" << std::endl;
+    std::cout << "  --downlimit [n]        Limit the download speed of files to n KB/s" << std::endl;
     std::cout << "  -h                     Sync hidden files,do not ignore them" << std::endl;
     std::cout << "  --version, -v          Display version and exit" << std::endl;
     std::cout << "" << std::endl;
@@ -244,6 +249,10 @@ void parseOptions( const QStringList& app_args, CmdOptions *options )
             options->davPath = it.next();
         } else if( option == "--max-sync-retries" && !it.peekNext().startsWith("-") ) {
             options->restartTimes = it.next().toInt();
+        } else if( option == "--uplimit" && !it.peekNext().startsWith("-") ) {
+            options->uplimit = it.next().toInt() * 1000;
+        } else if( option == "--downlimit" && !it.peekNext().startsWith("-") ) {
+            options->downlimit = it.next().toInt() * 1000;
         } else {
             help();
         }
@@ -297,6 +306,8 @@ int main(int argc, char **argv) {
     options.ignoreHiddenFiles = true;
     options.nonShib = false;
     options.restartTimes = 3;
+    options.uplimit = 0;
+    options.downlimit = 0;
     ClientProxy clientProxy;
 
     parseOptions( app.arguments(), &options );
@@ -478,6 +489,7 @@ restart_sync:
 
     SyncEngine engine(account, options.source_dir, folder, &db);
     engine.setIgnoreHiddenFiles(options.ignoreHiddenFiles);
+    engine.setNetworkLimits(options.uplimit, options.downlimit);
 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
     QObject::connect(&engine, &SyncEngine::finished,
                      [&app](bool result) { app.exit(result ? EXIT_SUCCESS : EXIT_FAILURE); });