public void Append(string name, byte[] data, long expectedVersion = -1) { lock (this.locker) { var version = this.name_events.ContainsKey(name) ? this.name_events[name].Last().Version : 0; if (version != expectedVersion) { throw new AppendOnlyStoreConcurrencyException(version, expectedVersion, name); } long next = 0; if (!this.name_events.ContainsKey(name)) { this.name_events[name] = new List<DataWithVersionAndName>(); } else { next = this.name_events[name].Last().Version; } next++; var stored = new DataWithVersionAndName() { Data = data, Name = name, Version = next }; this.all_events.Add(stored); this.name_events[name].Add(stored); Logger.Debug("Saved name: " + name); } }
public void Append(string name, byte[] data, long expectedVersion = -1) { lock (this.locker) { var version = this.name_events.ContainsKey(name) ? this.name_events[name].Last().Version : 0; if (version != expectedVersion) { throw new AppendOnlyStoreConcurrencyException(version, expectedVersion, name); } long next = 0; if (!this.name_events.ContainsKey(name)) { this.name_events[name] = new List <DataWithVersionAndName>(); } else { next = this.name_events[name].Last().Version; } next++; var stored = new DataWithVersionAndName() { Data = data, Name = name, Version = next }; this.all_events.Add(stored); this.name_events[name].Add(stored); Logger.Debug("Saved name: " + name); } }