more queue fixes
This commit is contained in:
		| @@ -2,6 +2,7 @@ | |||||||
| using MareSynchronosShared.Services; | using MareSynchronosShared.Services; | ||||||
| using MareSynchronosStaticFilesServer.Utils; | using MareSynchronosStaticFilesServer.Utils; | ||||||
| using System.Collections.Concurrent; | using System.Collections.Concurrent; | ||||||
|  | using System.Linq; | ||||||
| using System.Timers; | using System.Timers; | ||||||
|  |  | ||||||
| namespace MareSynchronosStaticFilesServer.Services; | namespace MareSynchronosStaticFilesServer.Services; | ||||||
| @@ -156,7 +157,8 @@ public class RequestQueueService : IHostedService | |||||||
|  |  | ||||||
|                     while (true) |                     while (true) | ||||||
|                     { |                     { | ||||||
|                         if (_priorityQueue.TryDequeue(out var prioRequest)) |                         if (!_priorityQueue.All(u => _cachedFileProvider.AnyFilesDownloading(u.FileIds)) | ||||||
|  |                             && _priorityQueue.TryDequeue(out var prioRequest)) | ||||||
|                         { |                         { | ||||||
|                             if (prioRequest.IsCancelled) |                             if (prioRequest.IsCancelled) | ||||||
|                             { |                             { | ||||||
| @@ -164,13 +166,17 @@ public class RequestQueueService : IHostedService | |||||||
|                             } |                             } | ||||||
|  |  | ||||||
|                             if (_cachedFileProvider.AnyFilesDownloading(prioRequest.FileIds)) |                             if (_cachedFileProvider.AnyFilesDownloading(prioRequest.FileIds)) | ||||||
|  |                             { | ||||||
|                                 _priorityQueue.Enqueue(prioRequest); |                                 _priorityQueue.Enqueue(prioRequest); | ||||||
|  |                                 continue; | ||||||
|  |                             } | ||||||
|  |  | ||||||
|                             DequeueIntoSlot(prioRequest, i); |                             DequeueIntoSlot(prioRequest, i); | ||||||
|                             break; |                             break; | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|                         if (_queue.TryDequeue(out var request)) |                         if (!_queue.All(u => _cachedFileProvider.AnyFilesDownloading(u.FileIds)) | ||||||
|  |                             && _queue.TryDequeue(out var request)) | ||||||
|                         { |                         { | ||||||
|                             if (request.IsCancelled) |                             if (request.IsCancelled) | ||||||
|                             { |                             { | ||||||
| @@ -178,7 +184,10 @@ public class RequestQueueService : IHostedService | |||||||
|                             } |                             } | ||||||
|  |  | ||||||
|                             if (_cachedFileProvider.AnyFilesDownloading(request.FileIds)) |                             if (_cachedFileProvider.AnyFilesDownloading(request.FileIds)) | ||||||
|  |                             { | ||||||
|                                 _queue.Enqueue(request); |                                 _queue.Enqueue(request); | ||||||
|  |                                 continue; | ||||||
|  |                             } | ||||||
|  |  | ||||||
|                             DequeueIntoSlot(request, i); |                             DequeueIntoSlot(request, i); | ||||||
|                             break; |                             break; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Stanley Dimant
					Stanley Dimant