Patent ID: 8037135

Claim:
A device comprising: one or more processors; an automatic distributed downloading module to facilitate resource downloads over one or more networks, the automatic distributed downloading module comprising: an automatic distributed downloading application programming interface (API) to: receive a resource request including a uniform resource identifier (URI) that corresponds to a targeted resource; and initiate retrieval of at least a portion of the targeted resource using the URI; a directory client to communicate with at least one directory service; the directory client to send to the at least one directory service a mapping request including the URI, and the directory client to receive from the at least one directory service a mapping response including peer-to-peer session connection information, the directory client being further configured to perform the communicate, send, and receive actions concurrently with the retrieval of the at least a portion of the targeted resource by the API; and an aggregate downloader configured to: create, as an initial configuration, multiple sessions with multiple sources of the targeted resource indicated by the mapping, the multiple sources including one or more peer-to-peer sources and one or more client-server sources by at least creating multiple protocol implementers each corresponding to one of the multiple sources indicated by the mapping; coordinate downloading of the targeted resource using the multiple sessions and corresponding protocol implementers such that different portions of the targeted resource are assigned to different protocol implementers and downloaded simultaneously; after the initial configuration and during the coordinated downloading of the targeted resource, add one or more new sources to the coordinated downloading of the targeted resource in response to the one or more new sources being identified by the directory client; aggregate portions of the targeted resource obtained using the multiple sessions and the one or more new sources; upon detection that one or more peer-to-peer sources for the targeted resource are not listed in the mapping response, invoke a session creation service to produce session connection information for retrieving the targeted resource from one or more peer-to-peer sources and create a mapping entry for the targeted resource that enables portions of the targeted resources to be downloaded by the directory client of the device via the one or more peer-to-peer sources; based on a comparison of a received hash value associated with the URI to a computed hash value associated with the aggregated portions of the targeted resource, obtain the targeted resource directly from the one or more client-server sources using the URI when the received hash value does not match the computed hash value; and a peer-to-peer protocol implementer to retrieve at least a portion of the targeted resource over a peer-to-peer network using the peer-to-peer session connection information.