public VersionVector Join(Siblings s1) { Ensure.That(s1, "s1").IsNotNull(); var ids = s1.Ids().Select(i => new CausalEvent(i, s1.MaxDot(i))); return(new VersionVector(ids)); }
/// <summary> /// Generates a new clock. /// </summary> public DottedVersionVector Event(VersionVector context, Siblings s, string i) { Ensure.That(s, "s").IsNotNull(); Ensure.That(context, "context").IsNotNull(); Ensure.That(i, "i").IsNotNullOrEmpty(); long maxDot = s.MaxDot(i); long maxCausalHistory = context[i]; long maxCounter = Math.Max(maxDot, maxCausalHistory); var dot = new CausalEvent(i, maxCounter + 1); return(new DottedVersionVector(dot, context)); }