Patent ID: 6941326

Claim:
In a computing environment that includes a server and one or more clients, a method for enabling synchronization of data stored at the one or more clients with data stored at the server, while accounting for one or more update notifications that either may or may not have been received by the one or more clients and while accounting for any differences in how the server and the one or more clients store data, the method comprising: an act of making a plurality of changes in the server data; an act of generating a plurality of tokens identifying each of the plurality of changes in the server data; an act of sending a plurality of update notifications to the one or more clients over an unreliable communication channel without requesting or receiving acknowledgement of receipt of the update notifications by the one or more clients, each update notification including (i) at least one of the plurality the changes and (ii) at least one of the plurality of tokens, the a 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 clients; an act of interpreting one or more tokens that were sent to the one or more clients but that were not received back from the one or more clients as indications that one or more changes are missing from the one or more clients; and an act of sending a list of one or more missing tokens to the one or more clients missing the one or more changes, the list identifying one or more tokens that were sent to the one or more clients but that were not received back; receiving a request from the one or more clients to resend the one or more missing tokens and corresponding changes; and an act of resending the one or more missing tokens and corresponding changes to the one or more requesting clients.