mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-17 16:26:39 +03:00
64896d70b0
This reflects changes in Google's policy on JavaScript license headers, which should be smaller to avoid increasing the size of the binary unnecessarily. This also updates the company name from "Google, Inc" to "Google LLC". Change-Id: I3f8b9ed3700b6351f43173d50c94d35c333e82b4
51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
/** @license
|
|
* Copyright 2016 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
goog.provide('shaka.util.OperationManager');
|
|
|
|
goog.require('shaka.util.ArrayUtils');
|
|
goog.require('shaka.util.IDestroyable');
|
|
|
|
/**
|
|
* A utility for cleaning up AbortableOperations, to help simplify common
|
|
* patterns and reduce code duplication.
|
|
*
|
|
* @implements {shaka.util.IDestroyable}
|
|
*/
|
|
shaka.util.OperationManager = class {
|
|
constructor() {
|
|
/** @private {!Array.<!shaka.extern.IAbortableOperation>} */
|
|
this.operations_ = [];
|
|
}
|
|
|
|
/**
|
|
* Manage an operation. This means aborting it on destroy() and removing it
|
|
* from the management set when it complete.
|
|
*
|
|
* @param {!shaka.extern.IAbortableOperation} operation
|
|
*/
|
|
manage(operation) {
|
|
this.operations_.push(operation.finally(() => {
|
|
shaka.util.ArrayUtils.remove(this.operations_, operation);
|
|
}));
|
|
}
|
|
|
|
/** @override */
|
|
destroy() {
|
|
const cleanup = [];
|
|
for (const op of this.operations_) {
|
|
// Catch and ignore any failures. This silences error logs in the
|
|
// JavaScript console about uncaught Promise failures.
|
|
op.promise.catch(() => {});
|
|
|
|
// Now abort the operation.
|
|
cleanup.push(op.abort());
|
|
}
|
|
|
|
this.operations_ = [];
|
|
return Promise.all(cleanup);
|
|
}
|
|
};
|