Managed event queue for independent clients
AssigneeBSquare Corporation
InventorVladimir Bushin
Life of this patent
Estimating the term…
Abstract
Technology for serving events to a plurality of client computing devices is disclosed. In some embodiments, the technology implements a queue containing a set of elements comprising one or more NULL components; and a list of events, each event corresponding to one or more client updates received from the associated client computing devices. The technology associates pointers in the queue with client computing devices for processing updates, and uses the pointers to determine whether or not to send particular updates to particular clients, thereby preventing some clients from slowing down update processing for all clients.
Claims16
A method performed by a server computing system for managing an event queue for different client computing systems associated with the server computing system, comprising:
- implementing, using a processor, a queue containing a set of elements, the set of elements comprising a list of at least two events, wherein:
- at least a first of the at least two events is a display event indicating one or more visual changes indicated by one or more of the client computing systems;
- and
- at least a second of the at least two events is a control event indicating a change of state of the server computing system relating to administration of the queue, wherein the control event is initiated by the server;
- assigning a pointer associated with a first client computing device to point to a first element of the queue;
- assigning a pointer associated with a second client computing device to point to a second element of the queue;
- selecting an updatable client computing device from the first client computing device and the second client computing device based on a determination that the updateable client computing device is available to receive an update event;
- selecting, using the processor, the update event from the queue based on the pointer associated with the updatable client computing device pointing to the update event;
- transmitting the update event to the updateable client computing device;
- assigning the pointer associated with the updatable client computing device to point to a subsequent element in the queue;
- choosing two or more events in the queue that will be consolidated, wherein the choosing includes excluding, from the two or more events in the queue that will be consolidated, any control events;
- creating a consolidated event encompassing the two or more chosen events;
- incorporating the consolidated event into an ordering of the list of at least two events;
- selecting a set of updatable pointers by determining whether any of the two or more pointers points to one of the two or more events chosen to be consolidated;
- and
- updating the set of updatable pointers by configuring each of the updatable pointers to point to either the consolidated event or another event in the queue which is not any of the two or more events chosen to be consolidated.
A system for managing an event queue for different client computing devices, comprising:
- a memory and one or more processors;
- a queue containing a set of elements, the set of elements comprising a list of events related to representations of a screen visible on the client computing devices, wherein at least one element of the set of elements is a control event indicating a change of state of a server computing system relating to administration of the queue, wherein the control event is initiated by the server;
- a first pointer associated with a first client computing device and pointing to a first particular element of the queue;
- a second pointer associated with a second client computing device and pointing to a second particular element of the queue;
- an update engine configured to select an update event pointed to by a selected pointer that corresponds to an updateable client computing device that is available to receive the update event;
- a transmitter configured to transmit the update event to the updateable client computing device;
- a pointer allocator configured to assign the selected pointer to point to a subsequent element in the queue;
- a consolidation determination engine configured to choose two or more events in the queue that will be consolidated, wherein the choosing includes excluding, from the two or more events in the queue that will be consolidated, any control events;
- and
- a consolidator configured to:
- create a consolidated event encompassing the two or more chosen events;
- incorporate the consolidated event into an ordering of the list of events;
- select a set of updatable pointers by determining whether any pointers points to one of the two or more events chosen to be consolidated;
- and
- updating the set of updatable pointers by configuring each of the updatable pointers to point to either the consolidated event or another event in the queue which is not any of the two or more events chosen to be consolidated.
A computer-readable storage medium, excluding a transitory propagating signal, storing instructions that, when executed by a computing system, cause the computing system to perform operations comprising:
- implementing, using a processor, a queue containing a set of elements, the set of elements comprising a list of events related to representations of a screen visible on the client computing devices, wherein at least one element of the set of elements is a control event indicating a change of state of a server computing system relating to administration of the queue, wherein the control event is initiated by the server;
- associating a first pointer with a first client computing device and pointing to a first particular element of the queue;
- associating a second pointer with a second client computing device and pointing to a second particular element of the queue;
- selecting, using the processor, an update event pointed to by a selected pointer that corresponds to an updateable client computing device that is available to receive the update event;
- transmitting the update event to the updateable client computing device;
- assigning the selected pointer to point to a subsequent element in the queue;
- choosing two or more events in the queue that will be consolidated, wherein the choosing includes excluding, from the two or more events in the queue that will be consolidated, any control events;
- creating a consolidated event encompassing the two or more chosen events;
- incorporating the consolidated event into an ordering of the list of events;
- selecting a set of updatable pointers by determining whether any pointers points to one of the two or more events chosen to be consolidated;
- and
- updating the set of updatable pointers by configuring each of the updatable pointers to point to either the consolidated event or another event in the queue which is not any of the two or more events chosen to be consolidated.
Dependencies are inferred from the claim text.