summaryrefslogtreecommitdiffstats
path: root/apps/files_external/js/rollingqueue.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/js/rollingqueue.js')
-rw-r--r--apps/files_external/js/rollingqueue.js137
1 files changed, 0 insertions, 137 deletions
diff --git a/apps/files_external/js/rollingqueue.js b/apps/files_external/js/rollingqueue.js
deleted file mode 100644
index df3797ada89..00000000000
--- a/apps/files_external/js/rollingqueue.js
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * ownCloud
- *
- * @author Juan Pablo VillafaƱez Ramos <jvillafanez@owncloud.com>
- * @author Jesus Macias Portela <jesus@owncloud.com>
- * @copyright (C) 2014 ownCloud, Inc.
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-(function(){
-/**
- * Launch several functions at thee same time. The number of functions
- * running at the same time is controlled by the queueWindow param
- *
- * The function list come in the following format:
- *
- * var flist = [
- * {
- * funcName: function () {
- * var d = $.Deferred();
- * setTimeout(function(){d.resolve();}, 1000);
- * return d;
- * }
- * },
- * {
- * funcName: $.get,
- * funcArgs: [
- * OC.filePath('files_external', 'ajax', 'connectivityCheck.php'),
- * {},
- * function () {
- * console.log('titoooo');
- * }
- * ]
- * },
- * {
- * funcName: $.get,
- * funcArgs: [
- * OC.filePath('files_external', 'ajax', 'connectivityCheck.php')
- * ],
- * done: function () {
- * console.log('yuupi');
- * },
- * always: function () {
- * console.log('always done');
- * }
- * }
- *];
- *
- * functions MUST implement the deferred interface
- *
- * @param functionList list of functions that the queue will run
- * (check example above for the expected format)
- * @param queueWindow specify the number of functions that will
- * be executed at the same time
- */
-var RollingQueue = function (functionList, queueWindow, callback) {
- this.queueWindow = queueWindow || 1;
- this.functionList = functionList;
- this.callback = callback;
- this.counter = 0;
- this.runQueue = function() {
- this.callbackCalled = false;
- this.deferredsList = [];
- if (!$.isArray(this.functionList)) {
- throw "functionList must be an array";
- }
-
- for (var i = 0; i < this.queueWindow; i++) {
- this.launchNext();
- }
- };
-
- this.hasNext = function() {
- return (this.counter in this.functionList);
- };
-
- this.launchNext = function() {
- var currentCounter = this.counter++;
- if (currentCounter in this.functionList) {
- var funcData = this.functionList[currentCounter];
- if ($.isFunction(funcData.funcName)) {
- var defObj = funcData.funcName.apply(funcData.funcName, funcData.funcArgs);
- this.deferredsList.push(defObj);
- if ($.isFunction(funcData.done)) {
- defObj.done(funcData.done);
- }
-
- if ($.isFunction(funcData.fail)) {
- defObj.fail(funcData.fail);
- }
-
- if ($.isFunction(funcData.always)) {
- defObj.always(funcData.always);
- }
-
- if (this.hasNext()) {
- var self = this;
- defObj.always(function(){
- _.defer($.proxy(function(){
- self.launchNext();
- }, self));
- });
- } else {
- if (!this.callbackCalled) {
- this.callbackCalled = true;
- if ($.isFunction(this.callback)) {
- $.when.apply($, this.deferredsList)
- .always($.proxy(function(){
- this.callback();
- }, this)
- );
- }
- }
- }
- return defObj;
- }
- }
- return false;
- };
-};
-
-if (!OCA.Files_External) {
- OCA.Files_External = {};
-}
-
-if (!OCA.Files_External.StatusManager) {
- OCA.Files_External.StatusManager = {};
-}
-
-OCA.Files_External.StatusManager.RollingQueue = RollingQueue;
-
-})();