High concurrency data download apparatus and method
First Claim
1. A method for concurrently downloading a large item to a plurality of users comprising:
- storing an item to be downloaded as a plurality of packets, each packet including a segment of the item and an index indicating the position of the segment within the item;
maintaining for each of a plurality of users a separate list of packets to be sent to the user; and
sending to each of the plurality of users the packets in their respective lists of packets.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for downloading large items packages the item as a plurality of packets and numbers each packet with an index stored in a header. For each user to whom an item is to be downloaded, a list of packets to be sent to the user is maintained. A send process loops through each user. In any given loop, one or more packets from the list is sent to the user. These packets are then marked as having been sent on that user'"'"'s list. Only one download buffer for storing the download packets and only one network communications buffer for use by a network and a connectionless transport service is required to send the packets to a plurality of users on demand. Each user indicates which packets it did not receive and those packets are added back to that user'"'"'s list for sending.
-
Citations
26 Claims
-
1. A method for concurrently downloading a large item to a plurality of users comprising:
-
storing an item to be downloaded as a plurality of packets, each packet including a segment of the item and an index indicating the position of the segment within the item;
maintaining for each of a plurality of users a separate list of packets to be sent to the user; and
sending to each of the plurality of users the packets in their respective lists of packets. - View Dependent Claims (2, 3, 4, 5, 6)
transmitting to each of the plurality of users information on the number of packets in the item;
receiving from each of the plurality of users indications of which, if any, of the packets have not been received by the user after such packets have been sent to the user; and
adding the packets that have not been received to the respective user'"'"'s list.
-
-
4. The method of claim 1 wherein each of the plurality of packets is stored as an object.
-
5. The method of claim 1 further comprising allocating a plurality of memory elements and creating in each memory element an object storing a separate one of the plurality of packets.
-
6. The method of claim 1 further comprising allocating a predetermined number of elements of memory for use by objects of a download packet class, prior to use of the memory by an object of the class;
- and wherein storing an item to be downloaded includes,
obtaining a plurality of free memory elements to create objects that are instances of the download class; and
storing in each of the plurality of the free memory elements a different segment of the item and an index for that segment.
- and wherein storing an item to be downloaded includes,
-
7. The method of claim 7 further comprising storing information on the usage of each of the plurality of memory elements as an object.
- 8. The method of claim 8, wherein each object stored in a memory element further includes the information on the usage of the memory element.
-
10. The method of claim 10 further including periodically checking the number of references to the object and, if less than one, indicating that the memory element occupied by the object is free.
-
11. A method of concurrently downloading an item, over one or more packet switched networks, to a plurality of users comprising:
-
storing an item to be downloaded as a plurality of packets, each packet including a segment of the item and an index indicating the position of the segment within the item;
maintaining for each of a plurality of users a separate list of packets to be sent to the user; and
for each of the plurality of users sending, in turn, one or more of the plurality of packets in that user'"'"'s list of packets. - View Dependent Claims (12)
-
-
13. A method for concurrently downloading an item to a plurality of recipients, comprising:
-
dividing an item to be downloaded into a plurality of segments, wherein each of said plurality of segments includes a portion of said item;
adding a header to each of said plurality of segments, thereby producing a plurality of packets, wherein said header includes an index indicating the position of said segment of said item within said item;
storing a copy of each of the plurality of packets;
maintaining for the plurality of recipients listings containing references to those of the plurality of packets to be transmitted to each of the plurality of recipients;
selecting a first recipient of the plurality of recipients and causing to be transmitted a copy of one or more of the packets that are referenced in the listings for transmission to the first recipient; and
selecting a second recipient of the plurality of recipients and causing to be transmitted a copy of one or more of the packets that are referenced in the listings for transmission to the second recipient. - View Dependent Claims (14, 15, 16, 17, 18, 19)
adding a network communications header to each packet prior to sending said packet.
-
-
15. The method of claim 13, further comprising:
for each packet sent to a particular one of said plurality of recipients, removing from the listings reference to said sent packet.
-
16. The method of claim 13, further comprising:
-
receiving from the first recipient a communication indicating which of the transmitted packets were not received by the recipient after such packets have been transmitted to the recipient; and
adding references for each of said packets that have not been received to the listings for transmission to the first recipient.
-
-
17. The method of claim 13, wherein each of the plurality of packets is stored as an object.
-
18. The method of claim 13, further comprising allocating a plurality of memory elements and creating in each allocated memory element an object storing a separate one of said plurality of packaged packets.
-
19. The method of claim 13, further comprising allocating a predetermined number of elements of memory for use by objects of a download packet class, prior to use of the memory by an object of the class;
- and wherein storing an item to be downloaded includes,
obtaining a plurality of free memory elements to create objects that are instances of said download class; and
storing in each of the plurality of free elements a different one of the plurality of packets.
- and wherein storing an item to be downloaded includes,
-
20. A computer readable medium storing instructions that, when read by a computer, cause the computer to perform a method for concurrently downloading an item to a plurality of recipients, the method comprising:
-
dividing an item to be downloaded into a plurality of segments, wherein each of said plurality of segments includes a portion of said item;
adding a header to each of said plurality of segments, thereby producing a plurality of packets, wherein said header includes an index indicating the position of said segment of said item within said item;
storing a copy of each of the plurality of packets;
maintaining for the plurality of recipients listings containing references to the plurality of packets to be transmitted to each of the plurality of recipients;
selecting a first recipient of the plurality of recipients and causing to be transmitted a copy of one or more of the packets that are referenced in the listings for transmission to the first recipient; and
selecting a second recipient of the plurality of recipients and causing to be transmitted a copy of one or more of the packets that are referenced in the listings for transmission to the second recipient. - View Dependent Claims (21, 22, 23, 24, 25, 26)
adding a network communications header to each packaged packet prior to sending said packaged packet.
-
-
22. The computer readable medium of claim 20, wherein the method further comprises, for each packet sent to a particular one of said plurality of recipients, removing from the listings reference to said sent packet.
-
23. The computer readable medium of claim 20, wherein the method further comprises:
-
receiving from the first recipient a communication indicating which of the transmitted packets were not received by the recipient after such packets have been transmitted to the recipient; and
adding references for each of said packets that have not been received to the listings for transmission to the first recipient.
-
-
24. The computer readable medium of claim 20, wherein each of the plurality of packets is stored as an object.
-
25. The computer readable medium of claim 20, wherein the method further comprises allocating a plurality of memory elements and creating in each allocated memory element an object storing a separate one of said plurality of packaged packets.
-
26. The computer readable medium of claim 20, wherein the method further comprises allocating a predetermined number of elements of memory for use by objects of a download packet class, prior to use of the memory by an object of the class;
- and wherein storing an item to be downloaded includes,
obtaining a plurality of free memory elements to create objects that are instances of said download class; and
storing in each of the plurality of free elements a different one of the plurality of packets.
- and wherein storing an item to be downloaded includes,
Specification