123456789101112131415161718192021222324252627282930313233343536 |
- /**
- * 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;
- })();
|