예제 #1
0
        public async Task <ReturnResult> CreateAsync(IStorageItemWithPath source, bool registerHistory)
        {
            FileSystemStatusCode            returnCode = FileSystemStatusCode.InProgress;
            Progress <FileSystemStatusCode> errorCode  = new Progress <FileSystemStatusCode>();

            errorCode.ProgressChanged += (s, e) => returnCode = e;

            IStorageHistory history = await filesystemOperations.CreateAsync(source, errorCode, cancellationToken);

            if (registerHistory && !string.IsNullOrWhiteSpace(source.Path))
            {
                App.HistoryWrapper.AddHistory(history);
            }

            return(returnCode.ToStatus());
        }
예제 #2
0
        public static ReturnResult ToStatus(this FileSystemStatusCode errorCode)
        {
            switch (errorCode)
            {
            case FileSystemStatusCode.Success:
                return(ReturnResult.Success);

            case FileSystemStatusCode.Generic:
                return(ReturnResult.InProgress | ReturnResult.Cancelled);

            case FileSystemStatusCode.Unauthorized:
                return(ReturnResult.AccessUnauthorized);

            case FileSystemStatusCode.NotFound:
                return(ReturnResult.IntegrityCheckFailed);

            case FileSystemStatusCode.InUse:
                return(ReturnResult.AccessUnauthorized);

            case FileSystemStatusCode.NameTooLong:
                return(ReturnResult.UnknownException);

            case FileSystemStatusCode.AlreadyExists:
                return(ReturnResult.Failed | ReturnResult.UnknownException);

            case FileSystemStatusCode.NotAFolder:
                return(ReturnResult.BadArgumentException | ReturnResult.IntegrityCheckFailed);

            case FileSystemStatusCode.NotAFile:
                return(ReturnResult.BadArgumentException | ReturnResult.IntegrityCheckFailed);

            case FileSystemStatusCode.InProgress:
                return(ReturnResult.InProgress);

            default:
                return(default);
            }
        }
예제 #3
0
 public FilesystemResult(T result, FileSystemStatusCode errorCode) : base(errorCode)
 {
     this.Result = result;
 }
예제 #4
0
 public static bool HasFlag(this FileSystemStatusCode errorCode, FileSystemStatusCode flag)
 {
     return((errorCode & flag) != FileSystemStatusCode.Success);
 }
예제 #5
0
 public FilesystemResult(FileSystemStatusCode errorCode) => ErrorCode = errorCode;