namespace EternalArrowBackup.Contracts.TargetStorage { using System; using System.Threading; using System.Threading.Tasks; public interface ITargetDirectory { /// /// Uploads new content to the target directory, and adds new entity with DateTime.UtcNow to the list of files /// /// File name /// Content /// File hash /// Task Task UploadNewContent(string filename, byte[] content, string hash); /// /// Adds new entity with DateTime.UtcNow to the list of files. /// /// Example: file "abc.txt" with content "qwe" (v1) was replaced with "rty" (v2), and then was replaced with "qwe" (v3) again. /// The client should for v1 and v2, and then call this method (passing v1 FileInfo to it) for v3. /// /// /// Task UpdateExistingContent(ITargetFile file); IObservable GetAllFiles(CancellationToken ct); } }