private void StoreBatch(BacthedPrintRequestDto request) { var isTheFirstRequest = PrintRequestsCache.AddBatch(request); if (!isTheFirstRequest) { return; } Task.Delay(TimeSpan.FromSeconds(AcceptBatchesTimeoutSeconds * 2)) .ContinueWith(t => PrintRequestsCache.RemoveRequestInProgress(request.PrintId)); }
private PrintRequest CreateAggregatedRequest(string printId) { var printRequest = PrintRequestsCache.GetPrintRequestInProgress(printId); var startTime = DateTime.Now; while (printRequest.HasMissingBatches()) { if ((DateTime.Now - startTime).TotalSeconds >= AcceptBatchesTimeoutSeconds) { throw new ForbiddenException("Accept batches timeout"); } Thread.Sleep(100); } return(printRequest); }
public void Print(string printerName, byte[] document, string id) { var filePath = StoreFile(document, id); new Thread(() => { try { Print(printerName, filePath); } finally { RemoveFile(filePath); PrintRequestsCache.RemoveRequestInProgress(id); } }).Start(); }