Refactoring

This commit is contained in:
Christian Kratky
2017-09-20 21:28:18 +02:00
parent 8131995006
commit dcf6f94d77
4 changed files with 20 additions and 18 deletions
+12 -12
View File
@@ -7,28 +7,28 @@ namespace MQTTnet.Core.Internal
{
public static class TaskExtensions
{
public static async Task TimeoutAfter( this Task task, TimeSpan timeout )
public static async Task TimeoutAfter(this Task task, TimeSpan timeout)
{
using ( var cancellationTokenSource = new CancellationTokenSource() )
using (var cancellationTokenSource = new CancellationTokenSource())
{
try
{
var timeoutTask = Task.Delay(timeout, cancellationTokenSource.Token);
var finishedTask = await Task.WhenAny(timeoutTask, task).ConfigureAwait(false);
if ( finishedTask == timeoutTask )
if (finishedTask == timeoutTask)
{
throw new MqttCommunicationTimedOutException();
}
if ( task.IsCanceled )
if (task.IsCanceled)
{
throw new TaskCanceledException();
}
if ( task.IsFaulted )
if (task.IsFaulted)
{
throw new MqttCommunicationException( task.Exception.GetBaseException() );
throw new MqttCommunicationException(task.Exception.GetBaseException());
}
}
finally
@@ -38,28 +38,28 @@ namespace MQTTnet.Core.Internal
}
}
public static async Task<TResult> TimeoutAfter<TResult>( this Task<TResult> task, TimeSpan timeout )
public static async Task<TResult> TimeoutAfter<TResult>(this Task<TResult> task, TimeSpan timeout)
{
using ( var cancellationTokenSource = new CancellationTokenSource() )
using (var cancellationTokenSource = new CancellationTokenSource())
{
try
{
var timeoutTask = Task.Delay(timeout, cancellationTokenSource.Token);
var finishedTask = await Task.WhenAny(timeoutTask, task).ConfigureAwait(false);
if ( finishedTask == timeoutTask )
if (finishedTask == timeoutTask)
{
throw new MqttCommunicationTimedOutException();
}
if ( task.IsCanceled )
if (task.IsCanceled)
{
throw new TaskCanceledException();
}
if ( task.IsFaulted )
if (task.IsFaulted)
{
throw new MqttCommunicationException( task.Exception.GetBaseException() );
throw new MqttCommunicationException(task.Exception.GetBaseException());
}
return task.Result;