Class: shaka.offline.DownloadManager

Constructor

new DownloadManager(networkingEnginenon-null)

Create a new download manager. It will use (but not own) |networkingEngine| and call |onProgress| after each download.
Parameters:
Name Type Description
networkingEngine shaka.net.NetworkingEngine
Implements:
Source:

Members

abortCallbacks_ :Array.<function(): !Promise>

A list of callback functions to cancel any in-progress downloads.
Type:
  • Array.<function(): !Promise>
Source:

groups_ :Map.<number, !Promise>

We group downloads. Within each group, the requests are executed in series. Between groups, the requests are executed in parallel. We store the promise chain that is doing the work.
Type:
  • Map.<number, !Promise>
Source:

Methods

abortAll() → {Promise}

Aborts all in-progress downloads.
Source:
Returns:
A promise that will resolve once the downloads are fully aborted.
Type
Promise

addDownloadEstimate(estimatedByteLength) → {number}

Adds a byte length to the download estimate.
Parameters:
Name Type Description
estimatedByteLength number
Source:
Returns:
estimateId
Type
number

destroy() → {Promise}

Request that this object be destroyed, releasing all resources and shutting down all operations. Returns a Promise which is resolved when destruction is complete. This Promise should never be rejected.
Implements:
Source:
Returns:
Type
Promise

fetchSegment_(request) → {Promise.<BufferSource>}

Download a segment and return the data in the response.
Parameters:
Name Type Description
request shaka.extern.Request
Source:
Returns:
Type
Promise.<BufferSource>

onInitData_()

A callback for when a segment has new PSSH data and we pass on the initData to storage
Source:

onProgress_()

A callback for when a segment has been downloaded. The first parameter is the progress of all segments, a number between 0.0 (0% complete) and 1.0 (100% complete). The second parameter is the total number of bytes that have been downloaded.
Source:

queue(groupId, request, estimateId, isInitSegment, onDownloaded) → {Promise}

Add a request to be downloaded as part of a group.
Parameters:
Name Type Description
groupId number The group to add this segment to. If the group does not exist, a new group will be created.
request shaka.extern.Request
estimateId number
isInitSegment boolean
onDownloaded function(BufferSource):!Promise The callback for when this request has been downloaded. Downloading for |group| will pause until the promise returned by |onDownloaded| resolves.
Source:
Returns:
Resolved when this request is complete.
Type
Promise

queueWork(groupId, callback) → {Promise}

Add additional async work to the group work queue.
Parameters:
Name Type Description
groupId number The group to add this group to. If the group does not exist, a new group will be created.
callback function():!Promise The callback for the async work. Downloading for this group will be blocked until the Promise returned by |callback| resolves.
Source:
Returns:
Resolved when this work is complete.
Type
Promise

setCallbacks(onProgress, onInitData)

Parameters:
Name Type Description
onProgress function(number, number)
onInitData function(!Uint8Array, string)
Source:

waitToFinish() → {Promise.<number>}

Get a promise that will resolve when all currently queued downloads have finished.
Source:
Returns:
Type
Promise.<number>