fixes and polly
This commit is contained in:
parent
92f333a4c4
commit
d61f46d07a
3 changed files with 34 additions and 5 deletions
Binary file not shown.
|
@ -16,6 +16,12 @@ using System.Collections.Concurrent;
|
|||
using Sledgemapper.Shared.Entities;
|
||||
using Refit;
|
||||
using System.Net.Http;
|
||||
using Polly.Retry;
|
||||
using Polly.Timeout;
|
||||
using Polly;
|
||||
using Polly.Extensions.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Net;
|
||||
|
||||
namespace Sledgemapper
|
||||
{
|
||||
|
@ -29,6 +35,8 @@ namespace Sledgemapper
|
|||
private Overlay _selectedOverlay = new Overlay { X = 1, Y = 1 };
|
||||
private int _tileSize = 30;
|
||||
private HubConnection connection;
|
||||
private AsyncRetryPolicy<HttpResponseMessage> retryPolicy;
|
||||
private AsyncTimeoutPolicy<HttpResponseMessage> timeoutPolicy;
|
||||
private readonly Desktop _desktop;
|
||||
private string _currentTileId = "";
|
||||
private string _currentWallId = "";
|
||||
|
@ -53,6 +61,8 @@ namespace Sledgemapper
|
|||
IsFixedTimeStep = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
// TODO: Add your initialization logic here
|
||||
|
@ -67,6 +77,14 @@ namespace Sledgemapper
|
|||
// .WithUrl("http://hub.michelescandura.com:5000/SledgemapperHub")
|
||||
.Build();
|
||||
|
||||
retryPolicy = HttpPolicyExtensions
|
||||
.HandleTransientHttpError()
|
||||
.Or<TimeoutRejectedException>() // Thrown by Polly's TimeoutPolicy if the inner call gets timeout.
|
||||
.WaitAndRetryAsync(2, _ => TimeSpan.FromMilliseconds(500));
|
||||
|
||||
timeoutPolicy = Policy
|
||||
.TimeoutAsync<HttpResponseMessage>(TimeSpan.FromMilliseconds(500));
|
||||
|
||||
var httpClientHandler = new HttpClientHandler();
|
||||
|
||||
//if (myConfigurationService.VerifySslCertificate == false)
|
||||
|
@ -80,6 +98,7 @@ namespace Sledgemapper
|
|||
{
|
||||
BaseAddress = new Uri("http://localhost:5000")
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
connection.On<SessionData>("UpdateMap", (map) =>
|
||||
|
@ -330,8 +349,8 @@ namespace Sledgemapper
|
|||
|
||||
window.Closed += (s, a) =>
|
||||
{
|
||||
// Called when window is closed
|
||||
};
|
||||
// Called when window is closed
|
||||
};
|
||||
|
||||
window.ShowModal(_desktop);
|
||||
}
|
||||
|
@ -909,10 +928,18 @@ namespace Sledgemapper
|
|||
_selectedOverlay.Intersection = false;
|
||||
}
|
||||
|
||||
|
||||
private void OnOverlayAdded(object sender, OverlayAddedEventArgs e)
|
||||
private async Task Execute(Func<Task> call)
|
||||
{
|
||||
_api.NewOverlay(e.Overlay, _session);
|
||||
await Policy
|
||||
.Handle<ApiException>(ex => ex.StatusCode == HttpStatusCode.RequestTimeout)
|
||||
.RetryAsync(5, async (exception, retryCount) => await Task.Delay(500))
|
||||
.ExecuteAsync(async () => await call().ConfigureAwait(false))
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private async void OnOverlayAdded(object sender, OverlayAddedEventArgs e)
|
||||
{
|
||||
await Execute(() => _api.NewOverlay(e.Overlay, _session));
|
||||
}
|
||||
private void OnTileAdded(object sender, TileAddedEventArgs e)
|
||||
{
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
</PackageReference>
|
||||
<PackageReference Include="Myra" Version="1.0.2.211" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="polly" Version="7.2.1" />
|
||||
<PackageReference Include="polly.extensions.http" Version="3.0.0" />
|
||||
<PackageReference Include="Refit.HttpClientFactory" Version="5.2.1" />
|
||||
|
||||
</ItemGroup>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue