diff options
author | Rory& <root@rory.gay> | 2024-11-22 06:38:42 +0100 |
---|---|---|
committer | Rory& <root@rory.gay> | 2024-11-22 06:38:42 +0100 |
commit | bb0c00531dfacd30ecef1ac4444c2e3281fa36b8 (patch) | |
tree | 8c96bfc792370a0385a0e4acec80da90192f1471 /LibMatrix | |
parent | HSE updates (diff) | |
download | LibMatrix-bb0c00531dfacd30ecef1ac4444c2e3281fa36b8.tar.xz |
Extra draupnir/policy event work HEAD github/master master
Diffstat (limited to 'LibMatrix')
-rw-r--r-- | LibMatrix/Helpers/SyncHelper.cs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/LibMatrix/Helpers/SyncHelper.cs b/LibMatrix/Helpers/SyncHelper.cs index c9ca85d..aed56a7 100644 --- a/LibMatrix/Helpers/SyncHelper.cs +++ b/LibMatrix/Helpers/SyncHelper.cs @@ -1,5 +1,7 @@ using System.Diagnostics; using System.Net.Http.Json; +using System.Text.Json; +using ArcaneLibs.Collections; using ArcaneLibs.Extensions; using LibMatrix.Filters; using LibMatrix.Homeservers; @@ -90,9 +92,11 @@ public class SyncHelper(AuthenticatedHomeserverGeneric homeserver, ILogger? logg if (httpResp is null) throw new NullReferenceException("Failed to send HTTP request"); logger?.LogTrace("Got sync response: {} bytes, {} elapsed", httpResp.GetContentLength(), sw.Elapsed); var deserializeSw = Stopwatch.StartNew(); - var resp = await httpResp.Content.ReadFromJsonAsync<SyncResponse>(cancellationToken: cancellationToken ?? CancellationToken.None, + var stream = await httpResp.Content.ReadAsStreamAsync(); + await using var seekableStream = new SeekableStream(stream); + var resp = await JsonSerializer.DeserializeAsync<SyncResponse>(seekableStream, cancellationToken: cancellationToken ?? CancellationToken.None, jsonTypeInfo: SyncResponseSerializerContext.Default.SyncResponse); - logger?.LogInformation("Deserialized sync response: {} bytes, {} elapsed, {} total", httpResp.GetContentLength(), deserializeSw.Elapsed, sw.Elapsed); + logger?.LogInformation("Deserialized sync response: {} bytes, {} elapsed, {} total", seekableStream.Position, deserializeSw.Elapsed, sw.Elapsed); var timeToWait = MinimumDelay.Subtract(sw.Elapsed); if (timeToWait.TotalMilliseconds > 0) await Task.Delay(timeToWait); |