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; }
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; }
public Entry(CommitForStorage commit, TimeSpan maxAge) { Commit = commit; _maxAge = maxAge; _dropTime = DateTime.Now.Add(maxAge); _task = new TaskCompletionSource<bool>(); }
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; }