Accounting for update notifications in synchronizing data that may be represented by different data structures
First Claim
1. In an environment that includes a first device storing first data and a second device storing second data, a method of synchronizing the second data with the first data, while accounting for one or more update notifications that either may or may not have been received by the second device and while accounting for any differences in how the first device and second device store data, the method comprising:
- an act of making a change in the first data;
an act of sending a notification to the second device, the notification including both the change and a token identifying the change;
an act of receiving a synchronization request from the second device; and
an act of resending the change to the second device if the synchronization request does not include the token.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and computer program products for synchronizing data stored at one or more message clients with data stored at a message server where the message clients may receive update notifications and may represent the data using different data structures than the message server uses to represent the same data. A token is associated with each data change that occurs at the message server. The message server sends each change and associated token to the message clients. When the message clients request a synchronization, the tokens they received are returned to the message server for comparison with the tokens the message server sent to the message clients. If the message clients do not return a particular token, the message server determines that the clients did not receive the corresponding change and resends the change to the message clients. Tokens may also be used to divide a change into one or more portions, with only one portion being provided initially. Then, in response to receiving the token associated with the portion, the message server may provide the remaining portion of the message to the message clients.
96 Citations
38 Claims
-
1. In an environment that includes a first device storing first data and a second device storing second data, a method of synchronizing the second data with the first data, while accounting for one or more update notifications that either may or may not have been received by the second device and while accounting for any differences in how the first device and second device store data, the method comprising:
-
an act of making a change in the first data;
an act of sending a notification to the second device, the notification including both the change and a token identifying the change;
an act of receiving a synchronization request from the second device; and
an act of resending the change to the second device if the synchronization request does not include the token. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
- 11. A method as recited in claim I wherein the notification corresponds to only a portion of the change made in the first data, the method further comprising the act of providing, in response to a request for synchronization that includes the token, any remaining portion of the change made in the first data.
-
12. In an electronic messaging environment that includes a message server and one or more message clients, a method of synchronizing data stored at the one or more message clients with data stored at the message server, while accounting for one or more update notifications that either may or may not have been received by the one or more message clients and while accounting for any differences in how the message server and the one or more message clients store data, the method comprising:
-
an act of making a plurality of changes in the message server data;
an act of generating a plurality of tokens identifying each of the plurality of changes in the message server data;
an act of sending a plurality of notifications to the one or more message clients over an unreliable communication channel, each notification including (i) at least one of the plurality the changes and (ii) at least one of the plurality of tokens, the at least one of the plurality of tokens corresponding to the at least one of the plurality of changes;
an act of receiving a plurality of tokens back from the one or more message clients;
an act of interpreting one or more tokens that were sent to the one or more message clients but not received back from the one or more message clients as indications that one or more changes are missing from the one or more message clients; and
an act of resending the one or more missing changes to the one or more message clients.
-
-
19. In an electronic messaging environment that includes a message server and one or more message clients, a method for synchronizing data stored at the one or more message clients with data stored at the message server, while accounting for one or more update notifications that either may or may not have been received by the one or more message clients and while accounting for any differences in how the message server and the one or more message clients store data, the method comprising:
-
a step for providing, over an unreliable communication channel, a plurality of notifications to the one or more message clients, the plurality of notifications including (i) a plurality of changes to the data stored at the message server, and (ii) a plurality of tokens identifying each of the plurality of changes;
a step for determining whether or not the one or more message clients are missing any of the plurality of notifications based on whether or not the one or more message clients can provide back each of the plurality of tokens identifying each of the plurality of changes; and
a step for providing to the one or more message clients, any change associated with a missing notification identified in the step for determining.
-
-
26. In an electronic messaging environment, a system for synchronizing data, while accounting for one or more update notifications that either may or may not have been received by the one or more message clients and while accounting for any differences in how the message server and the one or more message clients store data, the system comprising:
-
a message server storing data;
one or more message clients storing data;
an unreliable communication channel at least intermittently connecting the message server and the one or more message clients; and
processor means for performing the acts of;
making a plurality of changes in the message server data;
generating a plurality of tokens identifying each of the plurality of changes in the message server data;
sending a plurality of notifications to the one or more message clients over the unreliable communication channel, each notification including (i) at least one of the plurality the changes and (ii) at least one of the plurality of tokens, the at least one of the plurality of tokens corresponding to the at least one of the plurality of changes;
receiving a plurality of tokens back from the one or more message clients;
interpreting one or more tokens that were sent to the one or more message clients but not received back from the one or more message clients as indications that one or more changes are missing from the one or more message clients; and
resending the one or more missing changes to the one or more message clients.
-
-
33. A computer program product for use in an electronic messaging environment that includes a message server in communication with one or more message clients, the computer program product for implementing a method of synchronizing data stored at the one or more message clients with data stored at the message server, while accounting for one or more update notifications that either may or may not have been received by the one or more message clients and while accounting for any differences in how the message server and the one or more message clients store data, the computer program product comprising a computer-readable medium having computer-executable instructions for performing the acts of:
-
identifying a plurality of changes in the message server data;
generating a plurality of tokens identifying each of the plurality of changes in the message server data;
causing to be sent, a plurality of notifications to the one or more message clients over an unreliable communication channel, each notification including (i) at least one of the plurality the changes and (ii) a at least one of the plurality of tokens, the at least one of the plurality of tokens corresponding to the at least one of the plurality of changes;
accumulating a plurality of tokens back from the one or more message clients;
interpreting one or more tokens that were sent to the one or more message clients but not received back from the one or more message clients as indications that one or more changes are missing from the one or more message clients; and
causing to be resent, the one or more missing changes to the one or more message clients. - View Dependent Claims (34, 35, 36, 37, 38)
-
Specification