public virtual Response <T> WaitForCompletion <T>(UpdateStatus updateStatus, HasCompleted hasCompleted, Value <T> value, GetRawResponse getRawResponse, TimeSpan?suggestedInterval, CancellationToken cancellationToken)
        {
            while (true)
            {
                Response response = updateStatus(cancellationToken);

                if (hasCompleted())
                {
                    return(Response.FromValue(value(), getRawResponse()));
                }

                Thread.Sleep(_delayStrategy.GetNextDelay(response, suggestedInterval));
            }
        }
Exemple #2
0
 /// <summary>
 /// Attaches conditions to the class for checking whether it has completed
 /// </summary>
 /// <param name="func"></param>
 public void AttachCondition(HasCompleted func)
 {
     hasCompleted = func;
 }
Exemple #3
0
 public void AndThenTheResultIsReturnedOk()
 {
     Result.Should().Be(42);
     HasCompleted.Should().BeTrue();
 }
Exemple #4
0
 public void AndThenTheResultIsNotReturned()
 {
     Result.Should().Be(0);
     HasCompleted.Should().BeFalse();
 }
        public virtual async ValueTask <Response <T> > WaitForCompletionAsync <T>(UpdateStatusAsync updateStatusAsync, HasCompleted hasCompleted, Value <T> value, GetRawResponse getRawResponse, TimeSpan?suggestedInterval, CancellationToken cancellationToken)
        {
            while (true)
            {
                Response response = await updateStatusAsync(cancellationToken).ConfigureAwait(false);

                if (hasCompleted())
                {
                    return(Response.FromValue(value(), getRawResponse()));
                }

                await Task.Delay(_delayStrategy.GetNextDelay(response, suggestedInterval), cancellationToken).ConfigureAwait(false);
            }
        }