/**
* @license
* Copyright 2016 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
goog.provide('shaka.offline.IStorageEngine');
goog.require('shaka.util.IDestroyable');
/**
* An interface to abstract away the type of storage used on a specific
* platform.
*
* @interface
* @extends {shaka.util.IDestroyable}
*/
shaka.offline.IStorageEngine = function() {};
/**
* Gets whether the storage engine is initialized.
*
* @return {boolean}
*/
shaka.offline.IStorageEngine.prototype.initialized;
/**
* Initializes the storage system and creates the required tables.
*
* If opt_retryCount is given, then we are creating a new database and expect
* an 'upgradeneeded' event. If we don't get one, we will retry opt_retryCount
* times. This is used to work around a bug in IE/Edge and is only used in
* our unit tests.
*
* @see https://goo.gl/hOYJvN
*
* @param {!Object.<string, string>} storeMap
* A map of store name to the key path.
* @param {number=} opt_retryCount
* @return {!Promise}
*/
shaka.offline.IStorageEngine.prototype.init;
/**
* Gets the item with the given ID in the store.
*
* @param {string} storeName
* @param {number} key
* @return {!Promise.<T>}
* @template T
*/
shaka.offline.IStorageEngine.prototype.get;
/**
* Calls the given callback for each value in the store. The promise will
* resolve after all items have been traversed.
*
* @param {string} storeName
* @param {function(T)} callback
* @return {!Promise}
* @template T
*/
shaka.offline.IStorageEngine.prototype.forEach;
/**
* Adds or updates the given value in the store.
*
* @param {string} storeName
* @param {!Object} value
* @return {!Promise}
*/
shaka.offline.IStorageEngine.prototype.insert;
/**
* Removes the item with the given key.
*
* @param {string} storeName
* @param {number} key
* @return {!Promise}
*/
shaka.offline.IStorageEngine.prototype.remove;
/**
* Removes the elements with the given keys.
*
* @param {string} storeName
* @param {!Array<number>} keys
* @param {function()=} opt_onKeyRemoved
* @return {!Promise}
*/
shaka.offline.IStorageEngine.prototype.removeKeys;
/**
* Reserves the next ID and returns it.
*
* @param {string} storeName
* @return {number}
*/
shaka.offline.IStorageEngine.prototype.reserveId;