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);
            }
        }
Exemple #2
0
        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);
            }
        }