private async Task <ContentHashWithSize> TryGetFromFallbackAndPutAsync(OperationContext context, AbsolutePath targetFilePath, string fallbackStorageId, bool isImmutable) { // In the success case the content will be put at targetFilePath await _fallbackStorage.TryGetFileAsync(context, fallbackStorageId, targetFilePath, isImmutable).ThrowIfFailure(); var placementFileRealizationMode = isImmutable ? FileRealizationMode.Any : FileRealizationMode.Copy; var putResult = await PrivateCas.PutFileAsync(context, targetFilePath, placementFileRealizationMode, HashType, pinRequest : null).ThrowIfFailure(); return(new ContentHashWithSize(putResult.ContentHash, putResult.ContentSize)); }
protected virtual async Task <PutResult> PutFileAsync(OperationContext context, AbsolutePath file, ContentHash?hash, bool isImmutable = false, bool isUpload = false) { var putFileRealizationMode = isImmutable ? FileRealizationMode.Any : FileRealizationMode.Copy; PutResult putResult; if (hash != null) { putResult = await PrivateCas.PutFileAsync(context, file, putFileRealizationMode, hash.Value, pinRequest : null).ThrowIfFailure(); } else { putResult = await PrivateCas.PutFileAsync(context, file, putFileRealizationMode, HashType, pinRequest : null).ThrowIfFailure(); } return(putResult); }