2.8.2.5.3 Download Schedule Session

When a download schedule session is started, the client proceeds according to the following rules:

  • If all requested blocks are marked as "downloaded", then the client returns all blocks in the requested block ranges and exits the segment retrieval session.

  • If none of the requested blocks are marked as "idle" in the segment, the client clears the Download Initiated Flag and exits the download schedule session.

  • The rules for server entries that are marked as "free" in the Server Information List for the segment ID are as follows:

    • If the list of available block ranges for the server in the Server Information List is empty, then:

      • If the requested block ranges in the segment consist of three or less consecutive blocks, then the client:

        • Locates the first block that is marked as "idle" and changes it to "downloading".

        • Changes the server status to "busy" and initiates a Retrieval Protocol GetBlocks request (see [MS-PCCRR] section 2.2.4.3) to the server for that block.

      • Otherwise, the client skips to the next free server.

    • If there is a list of available block ranges for the server in the Server Information List for the segment, then the client:

      • Locates the first block in the server's available block ranges that is marked as "idle", changes the Block Download Status of that block to "downloading", changes the server status to "busy", and initiates a Retrieval Protocol GetBlocks request to the server for that block.

      • Skips to the next free server.

  • In the case of no free server: If all the servers are marked as "complete", the client aborts the segment retrieval session and notifies the client framework of missing blocks.

  • Otherwise, in the case of some servers that are still busy: The client clears the Download Initiated Flag and exits the download schedule session.