예제 #1
0
        public void TryToAdd(CommandRegistryItem item, CancellationToken cancellationToken = default)
        {
            if (_inner.Where(x => !string.IsNullOrEmpty(item.Key) && x.Value.Key == item.Key && x.Value.State < CommandRegistryItemState.Cancelled).Any())
            {
                throw new ConcurrencyException();
            }

            item.CancellationToken = cancellationToken;
            item.SetConflictingIds(GetIdsOfConflictingIncompleteRequests(item));
            item.Index = _inner.Count() + 1;
            _inner.TryAdd(item.CorrelationId, item);
        }