Пример #1
0
        public Task Store(CommitForStorage commit)
        {
            Logger.Debug("[StorageWriter] Received commit.");
            if (_queue.Count >= _maxSize)
                throw new StorageWriterBusyException(_maxSize);

            Logger.Debug("[StorageWriter] Have capacity, will accept.");
            var entry = new Entry(commit, _maxAgeBeforeDrop);
            _queue.Enqueue(entry);
            Logger.Debug("[StorageWriter] Commit queued. {0}", _queue.Count);
            return entry.Task;
        }
Пример #2
0
        private long getExpectedVersion(CommitForStorage commit)
        {
            CommitForStorage commit1 = commit;
            var eventsForStream = _events.Where(
                x => x.Context.Equals(commit1.Context) && x.Stream.Equals(commit1.Stream)).ToArray();

            long expectedVersion = 1;

            if (eventsForStream.Any())
                expectedVersion = eventsForStream.Max(x => x.Sequence) + 1;
            return expectedVersion;
        }
Пример #3
0
 public Entry(CommitForStorage commit, TimeSpan maxAge)
 {
     Commit = commit;
     _maxAge = maxAge;
     _dropTime = DateTime.Now.Add(maxAge);
     _task = new TaskCompletionSource<bool>();
 }
Пример #4
0
        private string storeEvent(string context, string typeKey, string body, string stream)
        {
            var @event = new EventForStorage(Guid.NewGuid(), 1, DateTime.UtcNow, typeKey, null, body);
            var commit = new CommitForStorage(Guid.NewGuid(), context, stream, @event);
            var commits = new CommitsForStorage(commit);
            _storage.Store(commits);

            return stream;
        }