METHOD AND SYSTEM FOR SYNCHRONIZING DATA USING A PRESENCE SERVICE
A method of synchronizing data using a presence service includes receiving, via a presence service, a first message that includes presence information from a first data store client of a group of data store clients. The first message is compatible with a transmission format that includes a status element for carrying a first status value that indicates that content in the first data store client has changed since a prior synchronization operation, if any, has occurred with a second data store client of the group. In response to receiving the first message, a second message is sent that enables a synchronization operation to occur for synchronizing content of the first data store client and the second data store client based on the change in the content of the first data store client.
1 . A method of synchronizing data using a presence service, the method comprising:
receiving, via a presence service, a first message including presence information from a first data store client of a group of data store clients, the first message compatible with a transmission format including a status element for carrying a first status value indicating that content in the first data store client has changed since a prior synchronization operation, if any, occurred with a second data store client of the group; and
in response to receiving the first message, sending a second message that enables a synchronization operation to occur for synchronizing content of the first data store client and the second data store client based on the change in the content of the first data store client.
2 . The method of claim 1 comprising:
creating and maintaining a data store tuple for at least one of the data store clients in the group; and
associating the presence information from the at least one data store clients with the data store tuple;
wherein the data store tuple is addressable by a publish command of the presence service and has a corresponding status element for storing a status value indicating whether content in the at least one data store client has changed since a prior synchronization operation, if any, occurred with at least one other data store client in the group.
3 . The method of claim 2 comprising:
subscribing another data store client in the group to receive notifications via the presence service related to the status element of the data store tuple associated with the at least one data store client.
4 . The method of claim 3 wherein the data store tuple is associated with the first data store client, the second data store client is subscribed to the status element of the data store tuple, the status value is the first status value, and sending the second message that enables the synchronization operation to occur comprises:
sending a notification, via the presence service, including at least a portion of the presence information associated with the data store tuple including the first status value to the subscribed second data store client via a notify command compatible with the transmission format to notify the second data store client of the change in the data content of the first data store client.
5 . The method of claim 4 comprising:
receiving change information comprising the changed content of the first data store client from the first data store client via a publish command capable of sending the change information as presence information compatible with the transmission format providing a change element for carrying the change information.
6 . The method of claim 5 comprising:
creating and maintaining a change tuple for the first data store client when the change information is generated by the first data store client; and
associating the presence information including the change information with the change tuple;
wherein the change tuple is addressable by a publish command of the presence service and has a structure corresponding to the transmission format including a corresponding change element for storing the change information.
7 . The method of claim 6 comprising:
subscribing the second data store client to receive notifications, via the presence service, related to the change element of the change tuple associated with the first data store client; and
sending a notification including at least a portion of the presence information associated with the change tuple including the change information to the subscribed second data store client via a notify command capable of sending the notification in conformance with the transmission format.
8 . The method of claim 1 , comprising receiving, via the presence service, a third message including presence information from at least one of the first data store client and the second data store client, the third message compatible with the transmission format and including a second status value, carried by the status element, indicating a synchronization of the content of the first data store client and the second data store client based on the change in the content of the first data store client.
9 . The method of claim 2 comprising:
providing a synchronization monitor in communication with the presence service, wherein the synchronization monitor tracks a synchronization progress of the synchronization operation.
10 . The method of claim 9 wherein the synchronization monitor is a client of the presence service and the method comprises:
subscribing the synchronization monitor to the status element of the data store tuple associated with the at least one data store client in the group.
11 . The method of claim 10 wherein the data store tuple is associated with the first data store client, the status value is the first status value, and sending the second message that enables the synchronization operation comprises:
sending a notification, via the presence service, including at least a portion of the presence information associated with the data store tuple including the first status value to the subscribed synchronization monitor via a notify command compatible with the transmission format to notify the synchronization monitor of the change in the data content of the first data store client.
12 . The method of claim 9 wherein providing the synchronization monitor includes providing an application program interface that allows the presence service to interact directly with the synchronization monitor.
13 . The method of claim 12 wherein sending the second message that enables the synchronization operation comprises:
using, by the presence service, the application program interface to invoke the synchronization monitor; and
sending a notification including at least a portion of the presence information associated with the data store tuple including the first status value to the synchronization monitor via the application program interface to notify the synchronization monitor of the change in the data content of the first data store client.
14 . The method of claim 9 comprising:
receiving change information based on the changed content of the first data store client from the synchronization monitor via a publish command capable of sending the change information as presence information compatible with the transmission format providing a change element for carrying the change information;
creating and maintaining a group tuple for the group; and
associating the presence information including the change information with the group tuple;
wherein the group tuple is addressable by a publish command of the presence service and has a structure corresponding to the transmission format including a group status element for storing a status of the group, a status element associated with each data store client in the group for storing the value of a status element of a data store client in the group, and a change element for carrying the change information.
15 . The method of claim 14 comprising:
subscribing at least two data store clients in the group to the change element of the group tuple; and
sending a notification including at least a portion of the presence information associated with the group tuple including the change information to the subscribed data store clients via a notify command capable of sending the notification in conformance with the transmission format.
16 . A method of synchronizing data content in a first data store client with data content in a second data store client using a presence service, the method comprising:
determining, by the first data store client, a change in data content of the first data store client and setting a value of a status element to a first status value indicating that data content in the first data store client has changed since a prior synchronization operation, if any, occurred with the second data store client; and
sending, by the first data store client, a first message including presence information and the first value to a presence service via a publish command capable of sending the presence information including the first value compatible with a transmission format providing a status element for carrying the first value.
17 . The method of claim 16 wherein a data store tuple is created and maintained by the presence service for the first data store client, the presence information including the first status value is associated with the data store tuple, and the data store tuple is addressable by a publish command of the presence service and has a structure compatible with the transmission format having a corresponding status element for storing the first status value.
18 . The method of claim 17 comprising:
requesting, by the second data store client, a subscription to receive notifications via the presence service related to the status element of the data store tuple associated with the first data store client;
receiving, by the second data store client, a notification including at least a portion of the presence information associated with the data store tuple including the first status value via a notify command compatible with the transmission format to notify the second data store client of the change in data content of the first data store client; and
in response to receiving the notification, initiating and executing the synchronization operation.
19 . The method of claim 18 wherein initiating the synchronization operation comprises:
sending a synchronization request from the second data store client to the first data store client; and
executing the synchronization operation between the first data store client and the second data store client when the request is granted.
20 . The method of claim 18 comprising:
sending, by the first data store client, change information comprising the changed content of the first data store client to the presence service via a publish command capable of sending the change information as presence information compatible with the transmission format providing a change element for carrying the change information;
wherein a change tuple associated with the first data store client is created and maintained by the presence service when the change information is generated by the first data store client, the presence information including the change information is associated with the change tuple, and the change tuple is addressable by a publish command of the presence service and has a structure corresponding to the transmission format including a corresponding change element for storing the change information.
21 . The method of claim 20 comprising:
requesting, by the second data store client, a subscription to receive notifications via the presence service related to the change element of the change tuple associated with the first data store client;
receiving, by the second data store client, a notification including at least a portion of the presence information associated with the change tuple including the change information via a notify command capable of sending the notification in conformance with the transmission format; and
using the change information in the change element to synchronize the data content of the second data store client with the first data store client.
22 . The method of claim 16 comprising:
receiving, by at least one of the first data store client and the second data store client, a synchronization command from a synchronization monitor, wherein the synchronization monitor tracks a synchronization progress of a synchronization operation; and
in response to receiving the command, initiating and executing the synchronization operation.
23 . The method of claim 16 comprising sending a second message to the presence service including presence information, the second message compatible with the transmission format and including a second status value, carried by the status element, indicating a synchronization of the content of the first data store client and the second data store client based on the change in the content of the first data store.
24 . A system for synchronizing data in a group of data store clients using a presence service, the method comprising:
a data store for storing presence information including status information; and
at least one presence server including a presence service and a network protocol stack component having a presence protocol layer for communicating with at least one presence service client, the presence service including:
a publication handler component, operatively coupled to the data store, configured to receive a first message including presence information from a first data store client of a group of data store clients, the first message compatible with a transmission format including a status element for carrying a first status value indicating that content in the first data store client has changed since a prior synchronization operation, if any, occurred with a second data store client of the group;
a notify component operatively coupled to the data store, configured to send a second message that enables a synchronization operation to occur for synchronizing content of the first data store client and the second data store client based on the change in the content of the first data store client in response to receiving the status element comprising the first value from the first data store client; and
a command router component, operatively coupled to the publication handler and notify components and to the network protocol stack component, the command router component configured to route the first message and second message between publication handler and notify components.
25 . The system of claim 24 wherein the presence service is configured to:
create and maintain a data store tuple for at least one of the data store clients in the group; and
associate the presence information from the at least one data store client with the data store tuple;
wherein the data store tuple is addressable by a publish command of the presence service and has a corresponding status element for storing a status value indicating whether content in the at least one data store client has changed since a prior synchronization operation, if any, occurred with at least one other data store client in the group.
26 . The system of claim 25 wherein the presence service includes a subscription handler component, operatively coupled to the publication handler and notify components and to the command router component, the subscription handler component configured to subscribe another data store client in the group to receive notifications via the presence service related to the status element of the data store tuple associated with the at least one data store client.
27 . The system of claim 26 wherein when the data store tuple is associated with the first data store client, the second data store client is subscribed to the status element of the data store tuple, and when the status value is the first status value, the notify component is configured to send a notification including at least a portion of the presence information associated with the data store tuple including the first status value to the subscribed second data store client via a notify command compatible with the transmission format to notify the second data store client of the change in the data content of the first data store client.
28 . The system of claim 27 wherein the publication handler component is configured to receive change information comprising the changed content of the first data store client from the first data store client via a publish command capable of sending the change information as presence information compatible with the transmission format providing a change element for carrying the change information.
29 . The system of claim 28 wherein the presence service is configured to:
create and maintain a change tuple for the first data store client when the change information is generated by the first data store client; and
associate the presence information including the change information with the change tuple;
wherein the change tuple is addressable by a publish command of the presence service and has a structure corresponding to the transmission format including a corresponding change element for storing the change information.
30 . The system of claim 29 wherein the subscription handler component is configured to subscribe the second data store client to receive notifications related to the change element of the change tuple associated with the first data store client, and the notify component is configured to send a notification including at least a portion of the presence information associated with the change tuple including the change information to the subscribed second data store client via a notify command capable of sending the notification in conformance with the transmission format.
31 . The system of claim 25 comprising a synchronization monitor operatively coupled to the presence service, wherein the synchronization monitor tracks a synchronization progress of the synchronization operation.
32 . The system of claim 31 wherein the synchronization monitor is a client of the presence service and hosted by a server that includes a network protocol stack component having a presence protocol layer for communicating with the presence service and wherein the subscription handler component is configured to subscribe the synchronization monitor to the status element of the data store tuple associated with the at least one data store client in the group.
33 . The system of claim 32 wherein the data store tuple is associated with the first data store client, the status value is the first status value, and the notify component is configured to send a notification including at least a portion of the presence information associated with the data store tuple including the first status value to the subscribed synchronization monitor via a notify command compatible with the transmission format to notify the synchronization monitor of the change in the data content of the first data store client.
34 . The system of claim 31 comprising an application program interface operatively coupling the synchronization monitor and the presence service such that the presence service interacts directly with the synchronization monitor.
35 . The system of claim 34 wherein the publication handler component is configured to invoke the synchronization monitor via the application program interface and the notify component is configured to send a notification including at least a portion of the presence information associated with the data store tuple including the first status value to the synchronization monitor via the application program interface to notify the synchronization monitor of the change in the data content of the first data store client.
36 . The system of claim 31 wherein the publication handler component is configured to receive change information based on the changed content of the first data store client from the synchronization monitor via a publish command capable of sending the change information as presence information compatible with the transmission format providing a change element for carrying the change information, and the presence service is configured to create and maintain a group tuple for the group, and to associate the presence information including the change information with the group tuple, wherein the group tuple is addressable by a publish command of the presence service and has a structure corresponding to the transmission format including a group status element for storing a status of the group, a status element associated with each data store client in the group for storing the value of a status element of a data store client in the group, and a change element for carrying the change information.
37 . The system of claim 36 wherein the subscription handler component is configured to subscribe at least two data store clients in the group to the change element of the group tuple, and the notify component is configured to send a notification including at least a portion of the presence information associated with the group tuple including the change information to the subscribed data stores via a notify command capable of sending the notification in conformance with the transmission format.
38 . A data server comprising:
a data store;
a data manager component for managing data content in the data store and for determining a change in content in the data store;
a data synchronization component, operatively coupled to the data manager component, configured to set a value of a status element to a first value indicating that content in the data store has changed since a prior synchronization operation, if any, occurred with another data store;
a network protocol stack component having a presence protocol layer configured to communicate with a presence service; and
a presentity component, operatively coupled to the data synchronization component and to the network protocol stack component, the presentity component configured to send a first message including presence information and the first value to the presence service via a publish command capable of sending the presence information including the first value compatible with a transmission format providing a status element for carrying the first value.
39 . The data server of claim 38 comprising at least one presence user agent component configured to format the presence information to include the value of the status element.
40 . The data server of claim 39 wherein a data store tuple is created and maintained by the presence service for the data server, the presence information including the first status value is associated with the data store tuple, and the data store tuple is addressable by a publish command of the presence service and has a structure compatible with the transmission format having a corresponding status element for storing the first status value.
41 . The data server of claim 40 comprising:
a watcher component, operatively coupled to the data synchronization component and to network protocol stack component, the watcher component configured to request a subscription to receive notifications via the presence service related to a status element of a second data store tuple associated with a second data store, and to receive a notification including at least a portion of the presence information associated with the second data store tuple including the first status value via a notify command compatible with the transmission format to notify the data store of a change in data content of the second data store, wherein when the value is the first value, the data synchronization component is configured to initiate and execute a synchronization operation.
42 . The data server of claim 41 wherein the data synchronization component is configured to send a synchronization request to the second data store and to execute the synchronization operation with the second data store when the request is granted.
43 . The data server of claim 41 wherein the presentity component is configured to send change information comprising changed content of the data store to the presence service via a publish command capable of sending the change information as presence information compatible with the transmission format providing a change element for carrying the change information, and wherein a change tuple associated with the data server is created and maintained by the presence service when the change information is sent by the data server, the presence information including the change information is associated with the change tuple, and the change tuple is addressable by a publish command of the presence service and has a structure corresponding to the transmission format including a corresponding change element for storing the change information.
44 . The data server of claim 43 wherein the watcher component is configured to request a subscription to receive notifications via the presence service related to a change element of a second change tuple associated with the second data store and to receive a notification including at least a portion of the presence information associated with the second change tuple including the changed content of the second data store via a notify command capable of sending the notification in conformance with the transmission format.
45 . The data server of claim 38 comprising a synchronization user agent, operatively coupled to the data synchronization component and to the network protocol stack, the synchronization user agent configured to send and receive synchronization messages to and from other data stores using a synchronization protocol.
46 . The data server of claim 38 comprising a synchronization user agent, operatively coupled to the data synchronization component and to the network protocol stack, the synchronization user agent configured to send and receive messages to and from a synchronization monitor, wherein the synchronization monitor tracks a synchronization progress of a synchronization operation.
47 . A computer readable medium containing program instructions for synchronizing data content in a first data store client with data content in a second data store client using a presence service, the program instructions for:
determining, by the first data store client, a change in data content of the first data store client and setting a value of a status element to a first status value indicating that data content in the first data store client has changed since a prior synchronization operation, if any, occurred with the second data store client; and
sending, by the first data store client, a first message including presence information and the first value to a presence service via a publish command capable of sending the presence information including the first value compatible with a transmission format providing a status element for carrying the first value.
48 . A computer readable medium containing program instructions for synchronizing data using a presence service, the program instructions for:
receiving, via a presence service, a first message including presence information from a first data store client of a group of data stores, the first message compatible with a transmission format including a status element for carrying a first status value indicating that content in the first data store client has changed since a prior synchronization operation, if any, occurred with a second data store client of the group; and
in response to receiving the first message, sending a second message that enables a synchronization operation to occur for synchronizing content of the first data store client and the second data store client based on the change in the content of the first data store client.