getAddress.Sequence.SequenceGenerator.TryGetSequenceValue C# (CSharp) Method

TryGetSequenceValue() private method

private TryGetSequenceValue ( SequenceKey sequenceKey ) : Task
sequenceKey SequenceKey
return Task
        private async Task<TryGetSequenceValueResult> TryGetSequenceValue(SequenceKey sequenceKey)
        {
            var sequence = await StateProvider.GetAsync(sequenceKey);

            if (sequence == null)
            {
                throw new SequenceCouldNotBeFoundException();
            }


            var result = new TryGetSequenceValueResult
            {
                Value = sequence.StartAt
            };

            if (sequence.Increment == 0)
            {
                result.Result = true;
                return result;
            }


            

            var sequenceValue =  sequence.CurrentValue + sequence.Increment;

            sequenceValue = CycleOrFailIfGreaterThanMaximum(sequence, sequenceValue);

            sequenceValue = CycleOrFailIfLessThanMinimum(sequence, sequenceValue);

            sequence.CurrentValue = sequenceValue;

            var updateResult = await StateProvider.UpdateAsync(sequenceKey, sequence);

            if (!updateResult)
            {
                return result;
            }

            result.Value = sequence.CurrentValue;

            result.Result = true;

            return result;

        }