Queuing system, method and computer program product for network data transfer
First Claim
1. A method in a network host for managing the delivery of data files over a network, comprising:
- (a) receiving, from a client, a first Hypertext Transfer Protocol (HTTP) request for a data file;
(b) determining if sufficient resources are available to service said first HTTP request;
(c) if sufficient resources are available to service said first HTTP request, providing an HTTP reply to said client, wherein said HTTP reply includes a link to said data file; and
(d) if sufficient resources are not available to service said first HTTP request, then;
(i) sending to said client an HTTP message offering entry into a queue, wherein said HTTP message includes a HyperText Markup Language (HTML) document providing queue information and a link for generating a second HTTP request to enter said queue, (ii) receiving from said client said second HTTP request to enter said queue, (iii) storing an identifier corresponding to said first HTTP request in a queue maintained by the host in a memory, and (iv) providing an HTTP reply to said client, wherein said HTTP reply includes a link to said data file, when said identifier reaches a predetermined position in said queue.
6 Assignments
0 Petitions
Accused Products
Abstract
A queuing system, method and computer program product is provided for transferring electronic information over a data network, such as the Internet. A host or system administrator monitors host resources by preventing one or more host resource limits from being exceeded. Where a resource limit is reached, a queuing protocol is initiated with a client requesting data. The queuing protocol permits the client to enter a queue and wait until host resources may be allocated to service the data request. The queue is maintained by the host, which may provide periodic updates to the client regarding queue length, position and estimated wait time. Clients may advance through the queue in accordance with a first-in-first-out algorithm, or some alternative priority scheme. When a client reaches the head of the queue, host resources are checked. If sufficient resources are available to service the client request, they are allocated to the client at the head of the queue.
83 Citations
34 Claims
-
1. A method in a network host for managing the delivery of data files over a network, comprising:
-
(a) receiving, from a client, a first Hypertext Transfer Protocol (HTTP) request for a data file;
(b) determining if sufficient resources are available to service said first HTTP request;
(c) if sufficient resources are available to service said first HTTP request, providing an HTTP reply to said client, wherein said HTTP reply includes a link to said data file; and
(d) if sufficient resources are not available to service said first HTTP request, then;
(i) sending to said client an HTTP message offering entry into a queue, wherein said HTTP message includes a HyperText Markup Language (HTML) document providing queue information and a link for generating a second HTTP request to enter said queue, (ii) receiving from said client said second HTTP request to enter said queue, (iii) storing an identifier corresponding to said first HTTP request in a queue maintained by the host in a memory, and (iv) providing an HTTP reply to said client, wherein said HTTP reply includes a link to said data file, when said identifier reaches a predetermined position in said queue. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
notifying said client, while said identifier is in said queue, of wait status.
-
-
3. The method of claim 2, wherein said notifying step comprises:
notifying said client, while said identifier is in said queue, of wait status, wherein said wait status includes an estimated wait time and a queue position.
-
4. The method of claim 1, further comprising:
advancing a position of said identifier in said queue in accordance with a first-in-first-out algorithm.
-
5. The method of claim 1, further comprising:
-
receiving periodic HTTP messages from said client, while said identifier is in said queue, said periodic HTTP messages indicating that said client is still waiting for said data file, and removing said identifier from said queue if a periodic HTTP message is not received by a predetermined time.
-
-
6. The method of claim 1, wherein said step of providing an HTTP reply to said client when said identifier reaches a predetermined position in said queue comprises:
providing said HTTP reply to said client when said identifier reaches a front of said queue and sufficient resources are available to service said first HTTP request.
-
7. The method of claim 1, further comprising:
-
ascertaining an availability of at least one resource; and
setting a resource limit based on said availability of said at least one resource;
wherein said determining step comprises determining if said resource limit has been reached.
-
-
8. The method of claim 7, wherein said at least one resource is network bandwidth, processing power, memory, file descriptors, socket descriptors, or disk input/output bandwidth.
-
9. The method of claim 7, wherein said resource limit is a limit on a total number of client connections for downloading data.
-
10. A method in a network host for managing the delivery of data files over a network, comprising:
-
(a) receiving, from a client, a first Hypertext Transfer Protocol (HTTP) request for a data file;
(b) determining if a number of active client connections has reached a predefined limit;
(c) if said number of active client connections has not reached said predefined limit, providing an HTTP reply to said client, wherein said HTTP reply includes a link to said data file; and
(d) if said number of active client connections has reached said predefined limit, then (i) sending to said client an HTTP message offering entry into a queue, wherein said HTTP message includes a HyperText Markup Language (HTML) document providing queue information and a link for generating a second HTTP request to enter said queue, (ii) receiving from said client said second HTTP request to enter said queue, (iii) storing an identifier corresponding to said first HTTP request in a queue maintained by the host in a memory, and (iv) providing an HTTP reply to said client, wherein said HTTP reply includes a link to said data file, when said identifier reaches a predetermined position in said queue. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
notifying said client, while said identifier is in said queue, of wait status.
-
-
12. The method of claim 11, wherein said notifying step comprises:
notifying said client, while said identifier is in said queue, of wait status, wherein said wait status includes an estimated wait time and queue position.
-
13. The method of claim 10, further comprising:
advancing a position of said identifier in said queue in accordance with a first-in-first-out algorithm.
-
14. The method of claim 10, further comprising:
-
receiving periodic HTTP messages from said client, while said identifier is in said queue, said periodic HTTP messages indicating that said client is still waiting for said data file, and removing said identifier from said queue if a periodic HTTP message is not received by a predetermined time.
-
-
15. The method of claim 10, wherein said step of providing said HTTP reply to said client when said identifier reaches a predetermined position in said queue comprises:
providing said HTTP reply to said client when said identifier reaches a front of said queue and said number of active client connections drops below said predefined limit.
-
16. The method of claim 10, further comprising:
-
ascertaining an availability of at least one resource; and
setting said predefined limit on said number of active client connections based on said availability of said at least one resource.
-
-
17. The method of claim 16, wherein said at least one resource is network bandwidth, processing power, memory, file descriptors, socket descriptors, or disk input/output bandwidth.
-
18. A computer program product comprising a computer useable medium having computer program logic recorded thereon for enabling a processor in a network host to manage the delivery of data files over a network, said computer program logic comprising:
-
(a) means for enabling the processor to receive, from a client, a first Hypertext Transfer Protocol (HTTP) request for a data file;
(b) means for enabling the processor to determine if sufficient resources are available to service said first HTTP request;
(c) means for enabling the processor to provide an HTTP reply to said client, said HTTP reply including a link to said data file, if sufficient resources are available to service said request; and
(d) means for enabling the processor to (i) send to said client an HTTP message offering entry into a queue, wherein said HTTP message includes a HyperText Markup Language (HTML) document providing queue information and a link for generating a second HTTP request to enter said queue, (ii) receive from said client said second HTTP request to enter said queue, (iii) store an identifier corresponding to said first HTTP request in a queue maintained by the host in a memory, and (iv) provide an HTTP reply to said client, wherein said HTTP reply includes a link to said data file, when said identifier reaches a predetermined position in said queue, if sufficient resources are not available to service said request. - View Dependent Claims (19, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34)
means for enabling the processor to notify said client, while said identifier is in said queue, of wait status.
-
-
21. The computer program product of claim 18, further comprising:
means for enabling the processor to advance a position of said identifier in said queue in accordance with a first-in-first-out algorithm.
-
22. The computer program product of claim 18, further comprising:
-
means for enabling the processor to receive periodic HTTP messages from said client, while said identifier is in said queue, said periodic HTTP messages indicating that said client is still waiting for said data file, and means for enabling the processor to remove said identifier from said queue if a periodic HTTP message is not received by a predetermined time.
-
-
23. The computer program product of claim 18, wherein said means for enabling the processor to provide an HTTP reply to said client when said identifier reaches a predetermined position in said queue comprises:
means for enabling the processor to provide an HTTP reply to said client when said identifier reaches a front of said queue and sufficient resources are available to service said request.
-
24. The computer program product of claim 18, further comprising:
-
means for enabling the processor to ascertain an availability of at least one resource; and
means for enabling the processor to set a resource limit based on said availability of said at least one resource;
wherein said means for enabling the processor to determine if sufficient resources are available to service said first HTTP request comprises means for enabling the processor to determine if said resource limit has been reached.
-
-
25. The computer program product of claim 24, wherein said means for enabling the processor to ascertain an availability of at least one resource comprises means for enabling the processor to ascertain an availability of at least one of network bandwidth, processing power, memory, file descriptors, socket descriptors, or disk input/output bandwidth.
-
26. The computer program product of claim 24, wherein said means for enabling the processor to set a resource limit based on said availability of said at least one resource comprises means for enabling the processor to set a limit on a total number of client connections for downloading data.
-
31. The computer program product of claim 18, further comprising:
-
means for enabling the processor to receive periodic HTTP messages from said client, while said identifier is in said queue, said periodic HTTP messages indicating that said client is still waiting for said data file, and means for enabling the processor to remove said identifier from said queue if a periodic HTTP message is not received by a predetermined time.
-
-
32. The computer program product of claim 18, wherein said means for enabling the processor to provide an HTTP reply to said client when said identifier reaches a predetermined position in said queue comprises:
means for enabling the processor to provide an HTTP reply to said client when said identifier reaches a front of said queue and said number of active client connections drops below said predefined limit.
-
33. The computer program product of claim 18, further comprising:
-
means for enabling the processor to ascertain an availability of at least one resource; and
means for enabling the processor to set said predefined limit on said number of active client connections based on said availability of said at least one resource.
-
-
34. The computer program product of claim 33, wherein said means for enabling the processor to ascertain an availability of at least one resource comprises means for enabling the processor to ascertain an availability of at least one of network bandwidth, processing power, memory, file descriptors, socket descriptors, or disk input/output bandwidth.
-
20. The computer program product of clam 19, wherein said means for enabling the processor to notify said client, while said identifier is in said queue, of wait status comprises:
means for enabling the processor to notify said client, while said identifier is in said queue, of wait status, wherein said wait status includes an estimated wait time and a queue position.
-
27. A computer program product comprising a computer useable medium having computer program logic recorded thereon for enabling a processor in a network host to manage the delivery of data files over a network, said computer program logic comprising:
-
(a) means for enabling the processor to receive, from a client, a first Hypertext Transfer Protocol (HTTP) request for a data file;
(b) means for enabling the processor to determine if a number of active client connections has reached a predefined limit;
(c) means for enabling the processor to provide an HTTP reply to said client, said HTTP reply including a link to said data file, if said number of active client connections has not reached said predefined limit; and
(d) means for enabling the processor to;
(i) send to said client an HTTP message offering entry into a queue, wherein said HTTP message includes a HyperText Markup Language (HTML) document providing queue information and a link for generating a second HTTP request to enter said queue, (ii) receive from said client said second HTTP request to enter said queue, (iii) store an identifier corresponding to said first HTTP request in a queue maintained by the host in a memory, and (iv) provide an HTTP reply to said client, wherein said HTTP reply includes a link to said data file, when said identifier reaches a predetermined position in said queue, if said number of active client connections has reached said predefined limit.- View Dependent Claims (28, 29, 30)
means for enabling the processor to notify said client, while said identifier is in said queue, of wait status.
-
-
29. The computer program product of claim 28, herein said means for enabling the processor to notify said client, while said identifier is in said queue, of wait status comprises:
means for enabling the processor to notify said client, while said identifier is in said queue, of wait status, wherein said wait status includes an estimated wait time and queue position.
-
30. The computer program product of claim 27, further comprising:
means for enabling the processor to advance a position of said identifier in said queue in accordance with a first-in-first-out algorithm.
Specification