%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps/files/js/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps/files/js/semaphore.js |
/**
* SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
(function(){
var Semaphore = function(max) {
var counter = 0;
var waiting = [];
this.acquire = function() {
if(counter < max) {
counter++;
return new Promise(function(resolve) { resolve(); });
} else {
return new Promise(function(resolve) { waiting.push(resolve); });
}
};
this.release = function() {
counter--;
if (waiting.length > 0 && counter < max) {
counter++;
var promise = waiting.shift();
promise();
}
};
};
// needed on public share page to properly register this
if (!OCA.Files) {
OCA.Files = {};
}
OCA.Files.Semaphore = Semaphore;
})();