Regalo
Regalo copied to clipboard
Implement event stream conflict detection
First stab at conflict detection:
var common = getcommonancestorevents()
var left = common.Clone()
var right = common.Clone()
left.apply(myevents, Options.BypassInvariants)
left.apply(theirevents, Options.BypassInvariants)
right.apply(theirevents, Options.BypassInvariants)
right.apply(myevents, Options.BypassInvariants)
if (!left.Equals(right)) throw RealConcurrencyException
try {
right.apply(myevents, Options.CheckInvariants)
} catch {
throw RealConcurrencyException
}
return true