Universal application server for providing applications on a variety of client devices in a client/server network
First Claim
1. In a client server network comprised of at least one application server providing at least one application program for selection by a user via a client device, a method for controlling the instantiation of application programs provided on an application server to a requesting client device using an universal application server in communication with the application server and the client device, comprising:
- at the universal application server;
providing a datastore comprising information for each user including application passwords and authorized applications, application server location and connection parameters, application program protocols and connection parameters, a bootstrap applet, a login applet, at least one protocol engine, and at least one display engine;
establishing a connection between the universal application server and the client device;
on receiving a request from the client device, retrieving the bootstrap applet from the datastore and downloading it to the requesting client device;
at the client device;
running the bootstrap applet on the client device;
obtaining user information and client device type and transmitting the user information and client device type to the universal application server;
at the universal application server;
on receiving the user information, creating a user webtop containing icons associated with the application programs authorized for the user; and
downloading the user webtop to the requesting client device for display;
waiting for the user to select at least one icon on the user webtop and request the associated application program, on receiving the application program request;
performing load balancing to determine which application server to use for the requested application program;
instantiating the appropriate protocol engine for the requested application program type;
downloading to the requesting client device the display engine for the client device type for execution on the client device, the session manager retrieving the appropriate protocol engine and display engine from the data store, establishing a connection between the instantiated protocol engine and the application server and instantiating an instance of the requested application program on the application server;
the protocol engine converting the application display requests to a form suitable for display on the display engine;
at the client device;
executing the downloaded display engine;
establishing a connection between the display engine and the instantiated protocol engine for receiving converted display requests from the requested application program and providing user interaction and requests to the requested application program via the protocol engine;
and, at the universal application server;
determining if the requested application program is resumable in the event that the connection to the client device is broken, and, if the application is not resumable, disconnecting from the application server and the instance of application program upon exiting of the user, and, if the application program is resumable, on disconnection of the client device, maintaining the connection to the application server and suspending the instance of the application until the client device and user reconnects.
6 Assignments
0 Petitions
Accused Products
Abstract
In a three tier client-server architecture, an universal application (UAP) server providing a middle or second tier between a third tier of application servers and a first tier of client devices to provide the controlled delivery of computer based application programs running on a set of application servers to a number of users using a wide variety of client devices without requiring the installation of software on, or changes to the application servers or application programs. The UAP server or application broker comprises a status manager engine, a session manager engine, a data store, a data store engine, a web server, and multiple instantiations of protocol engines design for a given application type and multiple instantiations of display engines for downloading to and operating on client devices. The UAP server provides: (1) means to support standard graphics based computer applications connected to clients of varying capability via a network of varying bandwidth and latency by automatically varying the type and number of graphic requests and their networking encoding to provide near optimum performance while maintaining the correct visual representation, (2) automatic construction of user worktops based on user data contained in a datastore, (3) loading balancing of application servers upon application launch and (4) resumable connections to client devices.
-
Citations
47 Claims
-
1. In a client server network comprised of at least one application server providing at least one application program for selection by a user via a client device, a method for controlling the instantiation of application programs provided on an application server to a requesting client device using an universal application server in communication with the application server and the client device, comprising:
-
at the universal application server;
providing a datastore comprising information for each user including application passwords and authorized applications, application server location and connection parameters, application program protocols and connection parameters, a bootstrap applet, a login applet, at least one protocol engine, and at least one display engine;
establishing a connection between the universal application server and the client device;
on receiving a request from the client device, retrieving the bootstrap applet from the datastore and downloading it to the requesting client device;
at the client device;
running the bootstrap applet on the client device;
obtaining user information and client device type and transmitting the user information and client device type to the universal application server;
at the universal application server;
on receiving the user information, creating a user webtop containing icons associated with the application programs authorized for the user; and
downloading the user webtop to the requesting client device for display;
waiting for the user to select at least one icon on the user webtop and request the associated application program, on receiving the application program request;
performing load balancing to determine which application server to use for the requested application program;
instantiating the appropriate protocol engine for the requested application program type;
downloading to the requesting client device the display engine for the client device type for execution on the client device, the session manager retrieving the appropriate protocol engine and display engine from the data store, establishing a connection between the instantiated protocol engine and the application server and instantiating an instance of the requested application program on the application server;
the protocol engine converting the application display requests to a form suitable for display on the display engine;
at the client device;
executing the downloaded display engine;
establishing a connection between the display engine and the instantiated protocol engine for receiving converted display requests from the requested application program and providing user interaction and requests to the requested application program via the protocol engine;
and, at the universal application server;
determining if the requested application program is resumable in the event that the connection to the client device is broken, and, if the application is not resumable, disconnecting from the application server and the instance of application program upon exiting of the user, and, if the application program is resumable, on disconnection of the client device, maintaining the connection to the application server and suspending the instance of the application until the client device and user reconnects. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 47)
determining which application servers in the network are capable of providing the requested application program; and
selecting from the application server determined in the previous step the one having the fewest number of applications running.
-
-
3. The method of claim 1 wherein prior to the step of instantiating the protocol engine, determining if an existing instance of the requested application program is in place for identified user, and if it is, reconnecting the user to the existing instance.
-
4. The method of claim 1 wherein prior to the step of instantiating the protocol engine, determining if an existing instance of the protocol engine for the requested application program type is in place and, if it is, using the existing instance of the protocol engine.
-
5. The method of claim 1 wherein prior to the step of instantiating the protocol engine, determining if an existing instance of the protocol engine for the requested application program type is in place and, if it is, using the existing instance of the protocol engine.
-
6. The process of claim 1 wherein instantiating the protocol engine and executing the display engine further comprise:
-
initializing the protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency;
executing on the universal application server the protocol engine comprising the steps of;
maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device;
each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor;
maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue;
while the total request time is less than a predetermined first value;
accepting a new pending request from the application service;
executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor;
converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request;
while the total network time is less than a predetermined second value;
optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization;
reading a pending request from the first queue and labeling each read request with a first sequence identifier;
encoding each read display request for transmission to the display engine;
placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine;
executing the display engine comprising the steps of;
unencoding the received converted display request and displaying it on the client device;
generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and
periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and
upon receipt of the second sequence identifier, the protocol engine further comprising the steps of;
deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and
decrementing from the total request time and from the total network time the request time values of each of the deleted display requests.
-
-
7. The method of claim 1 wherein the relative cost for a request comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
-
8. The method of claim 1 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
-
9. The method of claim 8 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
-
10. The method of claim 1 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
-
11. The method of claim 1 wherein the encoding further comprises the steps of
performing coordinate compression; -
performing run length encoding compression;
serializing the coordinate compressed and run length encoded compressed request into fixed byte ordered strings;
performing delta compression; and
performing Zlib compression.
-
-
12. The method of claim 11 wherein the encoding further comprises the steps of:
-
omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second;
applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second;
omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second;
setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second;
setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and
setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
-
-
13. The method of claim 12 further comprising:
-
periodically updating the of bandwidth and latency parameters; and
using the updated parameters to determine the level of encoding used.
-
-
14. The method of claim 1 further comprising:
-
periodically updating the bandwidth and latency parameters; and
using the updated parameters to determine the level of encoding used.
-
-
15. The method of claim 14 further comprising:
-
periodically updating the client device local performance factor and using the updated performance factor to determine the request times of pending requests received after the updating has occurred;
on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor;
on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then one minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
-
-
16. The method of claim 15 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
-
17. The method of claim 1 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about {fraction (1/20)} of the predetermined first value.
-
18. The method of claim 1 wherein prior to the step of instantiating the protocol engine, determining if an existing instance of the protocol engine for the requested application program type is in place and if it is, using the existing instance of the protocol engine.
-
19. The method of claim 1 wherein the relative cost for a request comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
-
20. The method of claim 1 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
-
21. The method of claim 20 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
-
22. The method of claim 1 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
-
23. The method of claim 1 wherein the encoding further comprises the steps of
performing coordinate compression; -
performing run length encoding compression;
serializing the coordinate compressed and run length encoded compressed request into fixed byte ordered strings;
performing delta compression; and
performing Zlib compression.
-
-
24. The method of claim 23 wherein the encoding further comprises the steps of:
-
omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second;
applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second;
omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second;
setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second;
setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and
setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
-
-
25. The method of claim 24 further comprising:
-
periodically updating the of bandwidth and latency parameters; and
using the updated parameters to determine the level of encoding used.
-
-
26. The method of claim 1 wherein the relative cost for a request comprises a predetermined fixed basic operation cost and a localized cost per pixel calculated for the client device.
-
27. The method of claim 1 wherein the optimization of the first queue further comprises the step of performing a pruning optimization prior to performing the merge optimization.
-
28. The method of claim 27 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
-
29. The method of claim 1 wherein the optimization of the first queue further comprises performing an update scheduling optimization and an attribute scheduling optimization.
-
30. The method of claim 1 wherein the encoding further comprises the steps of
performing coordinate compression; -
performing run length encoding compression;
serializing the coordinate compressed and run length encoded compressed request into fixed byte ordered strings;
performing delta compression; and
performing Zlib compression.
-
-
31. The method of claim 30 wherein the encoding further comprises the steps of:
-
omitting the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine greater than about 300 Kbytes per second;
applying the steps of run length encoding and delta compression if the bandwidth of the connection to the display engine is less than about 300 Kbytes per second;
omitting Zlib compression if the bandwidth of the connection to the display engine is greater than about 300 Kbytes per second;
setting the ZLib compression to its lowest and quickest compression level if the bandwidth of the connection to the display engine is between about 100 Kbytes to about 300 Kbytes per second;
setting the ZLib compression to a midrange compression level between its highest and lowest compression levels if the bandwidth of the connection to the display engine is between about 3 Kbytes to about 100 Kbytes per second; and
setting the ZLib compression to its highest compression level if the bandwidth of the connection to the display engine is less than about 3 Kbytes per second.
-
-
32. The method of claim 31 further comprising:
-
periodically updating the of bandwidth and latency parameters; and
using the updated parameters to determine the level of encoding used.
-
-
47. The method of claim 13 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is
-
33. In a client server network comprised of at least one application server providing at least one application program for selection by a user via a client device, a method for controlling the instantiation of application programs provided on an application server to a requesting client device using an universal application server in communication with the application server and the client device, comprising:
-
at the universal application server;
providing a datastore comprising information for each user including application passwords and authorized applications, application server location and connection parameters, application protocols and connection parameters, a bootstrap applet, a login applet, at least one protocol engine, and at least one display engine;
initializing a data store engine, a session manager engine and a web server;
establishing a connection between the web server and the client device;
on receiving a request from the client device, the web server retrieving the bootstrap applet from the datastore and downloading it to the requesting client device;
at the client device;
running the bootstrap applet on the client device;
obtaining login information including client device type and user information, and transmitting the login information to the web server for approval processing;
at the web server;
on receiving the login information passing it to the data store engine for approval processing;
on not receiving approval from the data store engine, rejecting the login information;
on receiving approval from the data store engine, creating a user webtop containing icons associated with the application programs authorized for the user; and
downloading the user webtop to the requesting client device for display;
waiting for the user to select at least one icon on the user webtop and request the associated application program, and, when the application program request is received from the client device passing the application program request to the session manger engine for processing;
at the session manager;
performing load balancing to determine which application server to use for the requested application program;
instantiating the appropriate protocol engine for the requested application program type;
downloading to the requesting client device the display engine for that client device type for execution on the client device, the session manager retrieving the appropriate protocol engine and display engine from the data store, having the instantiated protocol engine establish a connection to the application server and instantiating an instance of the requested application program on the application server;
the protocol engine converting the application display requests to a form suitable for display on the display engine;
at the client device;
executing the display engine;
establishing a connection between the display engine and the instantiated protocol engine for receiving converted display requests from the requested application program and providing user interaction and requests to the requested application program via the protocol engine;
and, at the instantiated protocol engine;
on receiving user interaction and requests having the protocol engine provide them to the application program for processing; and
determining if the requested application program is resumable in the event that the connection to the client device is ended, and, if the application program is not resumable, disconnecting from the application server and the instance of application program upon exiting of the user, and, if the application program is resumable, on disconnection of the client device maintaining the connection to the application server and suspending the instance of the application program until the client device and user reconnects. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41)
determining which application servers in the network are capable of providing the requested application program; and
selecting from the application server determined in the previous step the one having the fewest number of applications running.
-
-
35. The method of claim 34 wherein prior to the step of instantiating the protocol engine, determining if an existing instance of the requested application program is in place for identified user, and if it is, reconnecting the user to the existing instance.
-
36. The method of claim 34 wherein prior to the step of instantiating the protocol engine, determining if an existing instance of the protocol engine for the requested application program type is in place and if it is, using the existing instance of the protocol engine.
-
37. The process of claim 34 wherein instantiating the protocol engine and executing the display engine further comprise:
-
initializing the protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency;
executing on the universal application server the protocol engine comprising the steps of;
maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device;
each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor;
maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue;
while the total request time is less than a predetermined first value;
accepting a new pending request from the application service;
executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor;
converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request;
while the total network time is less than a predetermined second value;
optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization;
reading a pending request from the first queue and labeling each read request with a first sequence identifier;
encoding each read display request for transmission to the display engine;
placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine;
executing the display engine comprising the steps of;
unencoding the received converted display request and displaying it on the client device;
generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and
periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and
upon receipt of the second sequence identifier, the protocol engine further comprising the steps of;
deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and
decrementing from the total request time and from the total network time the request time values of each of the deleted display requests.
-
-
38. The method of claim 37 further comprising:
-
periodically updating the bandwidth and latency parameters; and
using the updated parameters to determine the level of encoding used.
-
-
39. The method of claim 38 further comprising:
-
periodically updating the client device local performance factor and using the updated performance factor to determine the request times of pending requests received after the updating has occurred;
on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor;
on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then one minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
-
-
40. The method of claim 39 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
-
41. The method of claim 37 wherein the predetermined first value is about five seconds, the predetermined second value is about two seconds, and the predetermined third value is about {fraction (1/20)} of the predetermined first value.
-
42. In a client server network comprised of at least one application server providing at least one application program for selection by a user via a client device, a method for controlling the instantiation of application programs provided on an application server to a requesting client device using an universal application server in communication with the application server and the client device, comprising:
-
at the universal application server;
providing a datastore comprising information for each user including application passwords and authorized applications, application server location and connection parameters, application protocols and connection parameters, a bootstrap applet, a login applet, a plurality of protocol engines, each protocol engine providing translation of a given application type protocol into a client device independent protocol, a plurality of display engines, each display engine rendering application program display requests on a given type of client device and receiving user input, and list of the number of applications running on each application server;
initializing a data store engine, a session manager engine and a web server;
establishing a connection between the web server and the client device;
on receiving a request from the client device, the web server retrieving the bootstrap applet from the datastore and downloading it to the requesting client device;
at the client device;
running the bootstrap applet on the client device;
obtaining login information including client device type and user information, and transmitting the login information to the web server for approval processing;
at the web server;
on receiving the login information passing it to the data store engine for approval processing;
on not receiving approval from the data store engine, rejecting the login information;
on receiving approval from the data store engine, creating from the datastore a user webtop containing icons associated with the application programs authorized for the user; and
downloading the user webtop to the requesting client device for display;
waiting for the user to select at least one icon on the user webtop and request the associated application program, and, when the application program request is received from the client device passing the application program request to the session manger engine for processing;
at the session manager;
searching the data store for the user'"'"'s application program password, and if no password is found;
downloading to the client device a password request display asking the user to create an application password;
determining if the user has submitted the application password, and, if not, ending the session, and, if the application password has been entered, encrypting the application program password and storing it in the data store;
on determining the application password, determining if an existing instance of the protocol engine and the requested application program is in place for identified user, if it is, reconnecting the user to the existing instance of the protocol engine and application program; and
, if not, determining if an instance of the appropriate protocol engine for the requested application program type is existing and, if so, using the existing instance of the protocol engine and, if not, instantiating, the appropriate protocol engine for the requested application program type;
downloading to the requesting client device the display engine for that client device type for execution on the client device, the session manager retrieving the appropriate protocol engine and display engine from the data store, establishing a connection between the instantiated protocol engine and the application server and instantiating an instance of the requested application program on the application server;
the protocol engine converting the application display requests to a form suitable for display on the display engine;
at the client device;
executing the display engine;
establishing a connection between the display engine and the instantiated protocol engine for receiving converted display requests from the requested application program and providing user interaction and requests to the requested application program via the protocol engine;
at the instantiated protocol engine;
on receiving user interaction and requests having the protocol engine provide them to the application program for processing;
determining if the requested application program is resumable in the event that the connection to the client device is ended, and, if the application program is not resumable, disconnecting the application program upon the user exiting, and, if the application program is resumable, maintaining the connection to the application server and suspending the instance of the application program until the client device and user reconnects. - View Dependent Claims (43, 44, 45, 46)
initializing the protocol engine with parameters of the client device comprising display operations supported by the client device, the relative cost of each supported operation and a local performance factor and parameters of the connection from the server to the display engine comprising bandwidth and latency;
executing on the universal application server the protocol engine comprising the steps of;
maintaining a first queue for retaining pending display requests and a second queue for retaining transmitted display requests of the requested application service for display on the client device;
each request having a corresponding relative cost and request time determined by the relative cost and the local performance factor;
maintaining a total request time for all requests in both queues and maintaining a total network time for all requests in the second queue;
while the total request time is less than a predetermined first value;
accepting a new pending request from the application service;
executing the new pending display request to create an image to be displayed on the client device, saving the resulting image to memory and determining for the image its relative cost and its corresponding request time based the local performance factor;
converting the new pending display request from the application service into a sequence of converted requests that are supported by the client device, placing the sequence of converted requests in the first queue, determining for each converted display request in the sequence its relative cost and its corresponding request time based on the local performance factor, and incrementing the total request time by the request time of each added request;
while the total network time is less than a predetermined second value;
optimizing the first queue using a merge optimization when the request times of the pending requests in the first queue exceed a predetermined third value and updating the total request time based on the results of the merge optimization;
reading a pending request from the first queue and labeling each read request with a first sequence identifier;
encoding each read display request for transmission to the display engine;
placing a copy of the optimized request into the second queue, incrementing the total network time by the request time for the newly added request, and transmitting the encoded display request to the display engine;
executing the display engine comprising the steps of;
unencoding the received converted display request and displaying it on the client device;
generating a second sequence identifier corresponding to first sequence identifier of the displayed request; and
periodically transmitting to the protocol engine the second sequence identifier of the last received display request displayed on the client device; and
upon receipt of the second sequence identifier, the protocol engine further comprising the steps of;
deleting from the second queue the display request whose first sequence identifier is the same as the second sequence identifier and all pending displayed requests in the second queue having first sequence identifiers that are prior to such second sequence identifier; and
decrementing from the total request time and from the total network time the request time values of each of the deleted display requests.
-
-
44. The method of claim 43 further comprising:
-
periodically updating the bandwidth and latency parameters; and
using the updated parameters to determine the level of encoding used.
-
-
45. The method of claim 44 further comprising:
-
periodically updating the client device local performance factor and using the updated performance factor to determine the request times of pending requests received after the updating has occurred;
on moving a pending request from the first queue to the second queue adding to the request an time estimate of the time when that request should be removed from the second queue based on the updated local performance factor;
on removing the request from the second queue, maintaining a running average and variance for the percentage error for the estimated time as compared to the actual time that the request was removed, and, if the total of the average error minus half of the variance exceeds a pre-set limit and the time since the last update is more then one minute then immediately repeating the steps of updating the connection parameters and the client device local performance factor parameter.
-
-
46. The method of claim 45 wherein the updated local performance is used to update the request times of the requests in the first and second queues.
Specification