private async Task <Batch> ProcessFile(string path) { Batch batch = null; await semaphore.WaitAsync(); try { if (!File.Exists(path)) { throw new FileNotFoundException(path); } int i; lock (syncCounter) { i = processedFilesCounter++; } UploadJob job = new UploadJob(Blob.FromFile(path)); job.SetFileId(i); job.SetChunked(IsChunkedUpload); job.SetChunkSize(ChunkSize); batch = await UploadBlob(job); } finally { semaphore.Release(); } return(batch); }
private async Task <Batch> UploadBlob(UploadJob job) { try { return(await Batch.Upload(job)); } catch (ServerErrorException exception) { throw new FailedToUploadException(job.ToString(), exception); } }