Abstract:
A server is in communication with a plurality of clients being executed by a host. The server is configured to receive a message from a first client of the plurality of clients. The message indicates that the first client currently has focus, wherein the message is transmitted by the first client with a first cookie. The server is configured to identify that a second client of the plurality of clients utilizes a second cookie that matches the first cookie, wherein the second client is currently receiving data from the server using a low-latency update mechanism. The server is also configured to downgrade the second client from the low-latency update mechanism to a high-latency update mechanism, wherein the high-latency update mechanism is configured to enable the second client to conduct a poll of the server periodically for updates.
Abstract:
A method for updating and formatting a local file is described. An update file, having a newer version of the local file, is accessed from a server over a network and a list of new hash values corresponding to data blocks of the update file is retrieved. Divisions between the data blocks are located when a value of a rolling checksum reaches a particular value, the data blocks being of variable size. New hash values of the update file are compared with local hash values of the local file. For each of the new hash values not having a matching local hash value, the corresponding data block is downloaded from the server and written to a new file. For each of the new hash values having a matching local hash value, the corresponding block is copied from the local file to the new file.
Abstract:
A method for updating and formatting a local file is described. An update file, having a newer version of the local file, is accessed from a server over a network and a list of new hash values corresponding to data blocks of the update file is retrieved. Divisions between the data blocks are located when a value of a rolling checksum reaches a particular value, the data blocks being of variable size. New hash values of the update file are compared with local hash values of the local file. For each of the new hash values not having a matching local hash value, the corresponding data block is downloaded from the server and written to a new file. For each of the new hash values having a matching local hash value, the corresponding block is copied from the local file to the new file.
Abstract:
A computer readable storage medium containing a program which, when executed by a processor, performs an operation of emulating static thread local storage of an executable software code at runtime, is disclosed. The operation includes executing the executable software code within a process memory space. During the execution of the executable software code, an occurrence of an event that is associated with a thread create operation is monitored. When the monitored event occurs, a thread data block duplicate is established within the process memory space and associated with a thread created by the thread create operation. The thread data block duplicate is configured to be accessed by executing a thread local storage callback function.
Abstract:
User profiles of remote desktops are managed in a crash-consistent manner. When a user logs into a remote desktop, metadata of the user profile is loaded from persistent storage while registry settings and files of the user profile are loaded asynchronously with respect to the login. During the remote desktop session, snapshots of the remote desktop image in persistent storage are generated periodically, and a change log that indicates changes to the user profile is created therefrom. The user profile stored in persistent storage is updated lazily using the change log at opportunistic times after snapshot generation. When the user logs out of the remote desktop, the user profile stored in the persistent storage is updated with any additional changes to the user profile by extracting the changes from the copy-on-write cache associated with the most recent snapshot.
Abstract:
A method for linking a plurality of virtualized application packages for execution on a computer system is described. A runtime executable of a primary virtualized application package is launched. A secondary virtualized application package to be merged with the primary virtualized application package is identified. In one embodiment, application settings and file data for the first and second virtualized application packages are merged into a single data structure. An execution layer is created by starting execution of one of the application files associated with the primary virtualized application package. Requests from the execution layer to the operating system for configuration settings and contents of application files of either the primary virtualized application package or secondary virtualized application package and providing requested configuration settings are satisfied using configuration settings and file information from both the primary and secondary virtualized application packages.
Abstract:
A designated storage system receives a request to store data in the local storage as a backup copy. The designated storage system requests a file system in the computer system to store the backup copy as a file in the local storage and maintains a record describing storage locations for each of the one or more sets of contiguous available file system data blocks. The storage system may transmit the record to a management computer configured to track which of the computer systems has stored the backup copy. The storage system then requests the file system to delete the file, whereupon the file system removes the file descriptor and frees the one or more file system data blocks in order to satisfy the deletion request but does not delete the data stored in the one or more file system data blocks.
Abstract:
A method for linking a plurality of virtualized application packages for execution on a computer system is described. A runtime executable of a primary virtualized application package is launched. A secondary virtualized application package to be merged with the primary virtualized application package is identified. In one embodiment, application settings and file data for the first and second virtualized application packages are merged into a single data structure. An execution layer is created by starting execution of one of the application files associated with the primary virtualized application package. Requests from the execution layer to the operating system for configuration settings and contents of application files of either the primary virtualized application package or secondary virtualized application package and providing requested configuration settings are satisfied using configuration settings and file information from both the primary and secondary virtualized application packages.
Abstract:
A graphical user interface (GUI) is polled to identify updates for transmission to a client device. A generalized poll of the GUI is conducted at a first frequency, wherein the poll compares color values of each pixel in a general region of the GUI with a previously known color value for that pixel to detect changed pixel color values. A local region that is a subset of the general region is determined to have a greater likelihood of being updated, e.g., regions encompassing a location of mouse and/or keyboard activity. A localized poll is conducted at a second frequency of only the local region of the GUI.
Abstract:
A server receives an update image for transmission to a client and encodes and compresses the update image data using a progressive encoding scheme. In one embodiment, the image data is encoded using progressive JPEG encoding and then into a base64 text string. When insufficient network bandwidth is available to transmit all of the image data for the update image, the server transmits only a first portion of the encoded image data, which is sufficient to fully reproduce the original update image but at a lower quality. When more network bandwidth becomes available, an additional portion of the encoded image data is transmitted to the client. The client is able to append the additional portion to the first portion to refine the image represented at the client. This mechanism may be implemented using unmodified web browsers and servers to remote a computer graphical user interface display.