Synchronization and collaboration within peer-to-peer and client/server environments
First Claim
1. A computer-readable storage medium having computer-executable instructions stored thereon which, when executed by a first client system operable with a server system, cause the first client system to:
- issue an invitation to a second client system to collaborate with the first client system;
establish a peer-to-peer relationship with the second client system by creating a first shared workspace locally on the first client system and a second shared workspace locally on the second client system, the first client system and the second client system collaborating through the first shared workspace and the second shared workspace;
participate in a peer-to-peer synchronization flow with the second client system, wherein the peer-to-peer synchronization flow represents updates made to at least one of the first shared workspace or the second shared workspace by at least one of the first client system and the second client system;
establish a client/server relationship with the server system, while maintaining the peer-to-peer relationship with the second client system;
participate in a client/server synchronization flow with the server system by receiving a synchronization data flow from the server system, wherein the client/server synchronization flow represents updates made to the first shared workspace associated with the first client system;
deconstruct the synchronization data flow into at least two subsets to form a deconstructed synchronization data flow;
define a multi-representative data type to represent the deconstructed synchronization data flow;
store the multi-representative data type of the deconstructed synchronization data flow on the first client system for reference by the second client system via the first shared workspace and the second shared workspace; and
receive an indication that the server system rejected a revision made to the at least one of the first shared workspace or the second shared workspace.
2 Assignments
0 Petitions
Accused Products
Abstract
Tools and techniques are described for synchronization and collaboration within peer-to-peer and client/server environments. These tools may provide methods that include establishing peer-to-peer relationships between two or more client systems. These relationships enable the client systems to create respective local instances of workspaces, shared between the client systems to allow them to collaborate with one another. The client systems may participate in peer-to-peer synchronization flows with one another, with the synchronization flows representing updates made local to the shared workspaces of the client systems. The methods may also establish establishing a client/server relationship between one of the client systems and a server system. Through this client/server relationship, the client and server systems may participate in client/server synchronization flows, with these flows representing updates made to the local shared workspace at the client system.
81 Citations
12 Claims
-
1. A computer-readable storage medium having computer-executable instructions stored thereon which, when executed by a first client system operable with a server system, cause the first client system to:
-
issue an invitation to a second client system to collaborate with the first client system; establish a peer-to-peer relationship with the second client system by creating a first shared workspace locally on the first client system and a second shared workspace locally on the second client system, the first client system and the second client system collaborating through the first shared workspace and the second shared workspace; participate in a peer-to-peer synchronization flow with the second client system, wherein the peer-to-peer synchronization flow represents updates made to at least one of the first shared workspace or the second shared workspace by at least one of the first client system and the second client system; establish a client/server relationship with the server system, while maintaining the peer-to-peer relationship with the second client system; participate in a client/server synchronization flow with the server system by receiving a synchronization data flow from the server system, wherein the client/server synchronization flow represents updates made to the first shared workspace associated with the first client system; deconstruct the synchronization data flow into at least two subsets to form a deconstructed synchronization data flow; define a multi-representative data type to represent the deconstructed synchronization data flow; store the multi-representative data type of the deconstructed synchronization data flow on the first client system for reference by the second client system via the first shared workspace and the second shared workspace; and receive an indication that the server system rejected a revision made to the at least one of the first shared workspace or the second shared workspace.
-
-
2. A computer-readable storage medium having computer-executable instructions stored thereon which, when executed by a first client system operable with a second client system, cause the first client system to:
-
issue an invitation to the second client system to collaborate with the first client system; establish a synchronization relationship between the first client system and the second client system, the synchronization relationship comprising a peer-to-peer collaborative relationship by which the first client system and the second client system exchange synchronization flows by creating a first shared workspace locally on the first client system and a second shared workspace locally on the second client system, the first client system and the second client system collaborating through the first shared workspace and the second shared workspace; receive, via the synchronization flows, an indication of a revision occurring on the second client system; determine that the revision results in a first conflict with information represented on the first client system; resolve the first conflict in favor of the first client system or the second client system; maintain the revision associated with the first conflict for access by the first client system and the second client system; establish a client/server relationship between the first client system and a server system, while maintaining the peer-to-peer collaborative relationship between the first client system and the second client system; receive a synchronization data flow from the server system in conjunction with the client/server relationship, wherein the synchronization data flow is deconstructed into at least two subsets to form a deconstructed synchronization data flow and defined by a multi-representative data type to represent the deconstructed synchronization data flow, wherein the multi-representative data type of the deconstructed synchronization data flow is stored on the first client system for reference by the second client system via the first shared workspace and the second shared workspace; receive a response from the server system in response to the first client system syncing a representation of a second revision to the server system; and receive an indication that the server system rejected the second revision. - View Dependent Claims (3, 4, 5, 6, 7)
-
-
8. A computer-readable storage medium having computer-executable instructions stored thereon which, when executed by a first client system operable with a second client system, cause the first client system to:
-
issue an invitation to the second client system to collaborate with the first client system; establish a synchronization relationship between the first client system and the second client system, by which the first client system and the second client system exchange synchronization flows by creating a first shared workspace locally on the first client system and a second shared workspace locally on the second client system, the first client system and the second client system collaborating through the first shared workspace and the second shared workspace; receive indications of one or more local revisions occurring locally at the first client system; create a local version in response to receiving the indications of the one or more local revisions occurring locally at the first client system, the local version comprising the one or more local revisions; sync, via the synchronization flows, the local version with the second client system; receive, via the synchronization flows, a remote version comprising one or more remote revisions occurring remotely at the second client system; participate in a client/server synchronization flow with a server system; receive instructions to receive a synchronization data flow from the server system, wherein the synchronization data flow is deconstructed into at least two subsets to form a deconstructed synchronization data flow and defined by a multi-representative data type to represent the deconstructed synchronization data flow, wherein the multi-representative data type of the deconstructed synchronization data flow is stored on the first client system for reference by the second client system via the first shared workspace and the second shared workspace; determine whether a conflict exists between the local version and the remote version; if the first client system determines that the conflict exists between the local version and the remote version, select a winning version from the local version and the remote version; and provide an indication that the server system rejected the local version or the remote version. - View Dependent Claims (9, 10, 11, 12)
-
Specification