dangerous release (possibly memory leak and deadlock)
This commit is contained in:
parent
a1cb6592eb
commit
741d34a5e0
10 changed files with 164 additions and 115 deletions
|
|
@ -6,7 +6,11 @@ namespace StitchATon2.App.Controllers;
|
|||
|
||||
public static class ImageController
|
||||
{
|
||||
public static async Task GenerateImage(HttpResponse response, GenerateImageDto dto, TileManager tileManager)
|
||||
public static async Task GenerateImage(
|
||||
HttpResponse response,
|
||||
GenerateImageDto dto,
|
||||
TileManager tileManager,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (dto.GetErrors() is { Count: > 0 } errors)
|
||||
{
|
||||
|
|
@ -14,7 +18,7 @@ public static class ImageController
|
|||
response.ContentType = "text/json";
|
||||
var errorBody = JsonSerializer.Serialize(errors, AppJsonSerializerContext.Default.DictionaryStringListString);
|
||||
response.ContentLength = errorBody.Length;
|
||||
await response.WriteAsync(errorBody);
|
||||
await response.WriteAsync(errorBody, cancellationToken: cancellationToken);
|
||||
await response.CompleteAsync();
|
||||
return;
|
||||
}
|
||||
|
|
@ -24,12 +28,15 @@ public static class ImageController
|
|||
|
||||
await tileManager
|
||||
.CreateSection(dto)
|
||||
.DangerousWriteToPipe(response.BodyWriter, dto.OutputScale);
|
||||
.DangerousWriteToPipe(response.BodyWriter, dto.OutputScale, cancellationToken);
|
||||
|
||||
await response.CompleteAsync();
|
||||
}
|
||||
|
||||
public static async Task GenerateRandomImage(HttpResponse response, TileManager tileManager)
|
||||
public static async Task GenerateRandomImage(
|
||||
HttpResponse response,
|
||||
TileManager tileManager,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
response.StatusCode = 200;
|
||||
response.ContentType = "image/png";
|
||||
|
|
@ -47,7 +54,7 @@ public static class ImageController
|
|||
var scale = float.Clamp(480f / int.Max(section.Width, section.Height), 0.01f, 1f);
|
||||
Console.WriteLine($"Generate random image for {coordinatePair} scale: {scale}");
|
||||
|
||||
await section.DangerousWriteToPipe(response.BodyWriter, scale);
|
||||
await section.DangerousWriteToPipe(response.BodyWriter, scale, cancellationToken);
|
||||
await response.CompleteAsync();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue