Patent ID: 7167900

Claim:
A computer-readable medium having computer-executable instructions to cause a computer to perform a method of arbitrating changes to a data object shared among multiple computers, the method comprising: creating an arbitration object associated with the shared data object on a local computer, the arbitration object having a state set to idle; transiting the state of the arbitration object from idle to waiting for closure upon receiving a proposal message to change the data object from a remote computer that shares the data object, such that an observer arbitration cycles is begun on the local computer; transiting the state of the arbitration object from waiting for closure to idle upon receiving a closure message for the observer arbitration cycle when the local computer has received a proposal message from each remote computer listed in the closure message; transiting the state of the arbitration object form waiting for closure to waiting for proposal upon receiving a closure message for the observer arbitration cycle when the local computer is missing a proposal message from at least one remote computer listed in the closure message; transiting the state of the arbitration object from waiting for proposal to idle upon receiving all missing proposal messages for the observer arbitration cycle; transiting the state of the arbitration object from idle to waiting for responses upon broadcasting a proposal message to change the data object to each remote computer that shares the data object, such that an instigator arbitration cycle is begun on the local computer; transiting the state of the arbitration object from waiting for responses to idle upon receiving a response for each proposal message broadcast by the local computer for the instigator arbitration cycle before receiving a closure message for the instigator arbitration cycle from a remote computer; transiting the state of the arbitration object from waiting for responses to idle upon receiving a closure message for the instigator arbitration cycle from a remote computer after receiving a response for each proposal message broadcast by the local computer for the instigator arbitration cycle; and transiting the state of the arbitration object from waiting for closure to idle upon receiving a closure message for the instigator arbitration cycle from a remote computer.