private BatchCellsWriter _BuildBatch(IEnumerable <CellInfo> cells, Guid task_id) { BatchCellsWriter writer = new BatchCellsWriter(); writer.task_id = task_id; return(writer); }
private async Task _SendBatch(BatchCellsWriter batch, DynamicRemoteStorage storage, SemaphoreSlim signal_c, ManualResetEventSlim signal_t) { await signal_c.WaitAsync(); while (signal_t.IsSet) { await Task.Delay(1); } try { using (batch) { using (var reader = await storage.BatchSaveCells(batch)) { if (reader.throttle) { signal_t.Set(); Log.WriteLine($"{nameof(_SendBatch)}: throttled by remote storage {storage.ReplicaInformation.Id}"); await Task.Delay(1000); signal_t.Reset(); } } } } finally { signal_c.Release(); } }