/// <summary> /// Calculates the hash for the given file (if not given) and queues it up /// to be batch-processed later (<see cref="ProcessAddFilesAsync"/>). /// </summary> public async Task <AddFileResult> AddFileAsync(IDropItem dropItem) { Contract.Requires(dropItem != null); m_logger.Verbose("Queued file '{0}'", dropItem); Interlocked.Increment(ref Stats.NumAddFileRequests); var addFileItem = new AddFileItem(dropItem); await m_batchBlock.SendAsync(addFileItem); return(await addFileItem.TaskSource.Task); }
/// <summary> /// Calculates the hash for the given file (if not given) and queues it up /// to be batch-processed later (<see cref="ProcessAddFilesAsync"/>). /// </summary> public async Task <AddFileResult> AddFileAsync(IDropItem dropItem) { Contract.Requires(dropItem != null); m_logger.Verbose("Queued file '{0}'", dropItem); Interlocked.Increment(ref Stats.NumAddFileRequests); var addFileItem = new AddFileItem(dropItem); await m_batchBlock.SendAsync(addFileItem); var manifestResult = await addFileItem.BuildManifestTaskSource.Task; var dropResult = await addFileItem.DropResultTaskSource.Task; return(manifestResult == RegisterFileForBuildManifestResult.Failed ? AddFileResult.RegisterFileForBuildManifestFailure : dropResult); }