-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathIVfsEntry.cs
More file actions
137 lines (116 loc) · 3.37 KB
/
IVfsEntry.cs
File metadata and controls
137 lines (116 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using ManagedCode.Storage.VirtualFileSystem.Core;
namespace ManagedCode.Storage.VirtualFileSystem.Core;
/// <summary>
/// Base interface for virtual file system entries
/// </summary>
public interface IVfsEntry
{
/// <summary>
/// Gets the path of this entry
/// </summary>
VfsPath Path { get; }
/// <summary>
/// Gets the name of this entry
/// </summary>
string Name { get; }
/// <summary>
/// Gets the type of this entry
/// </summary>
VfsEntryType Type { get; }
/// <summary>
/// Gets when this entry was created
/// </summary>
DateTimeOffset CreatedOn { get; }
/// <summary>
/// Gets when this entry was last modified
/// </summary>
DateTimeOffset LastModified { get; }
/// <summary>
/// Checks if this entry exists
/// </summary>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>True if the entry exists</returns>
ValueTask<bool> ExistsAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Refreshes the entry information from storage
/// </summary>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Task representing the async operation</returns>
Task RefreshAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Gets the parent directory of this entry
/// </summary>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>The parent directory</returns>
ValueTask<IVirtualDirectory> GetParentAsync(CancellationToken cancellationToken = default);
}
/// <summary>
/// Type of virtual file system entry
/// </summary>
public enum VfsEntryType
{
/// <summary>
/// A file entry
/// </summary>
File,
/// <summary>
/// A directory entry
/// </summary>
Directory
}
/// <summary>
/// Progress information for copy operations
/// </summary>
public class CopyProgress
{
/// <summary>
/// Total number of bytes to copy
/// </summary>
public long TotalBytes { get; set; }
/// <summary>
/// Number of bytes copied so far
/// </summary>
public long CopiedBytes { get; set; }
/// <summary>
/// Total number of files to copy
/// </summary>
public int TotalFiles { get; set; }
/// <summary>
/// Number of files copied so far
/// </summary>
public int CopiedFiles { get; set; }
/// <summary>
/// Current file being copied
/// </summary>
public string? CurrentFile { get; set; }
/// <summary>
/// Percentage completed (0-100)
/// </summary>
public double PercentageComplete => TotalBytes > 0 ? (double)CopiedBytes / TotalBytes * 100 : 0;
}
/// <summary>
/// Result of a delete directory operation
/// </summary>
public class DeleteDirectoryResult
{
/// <summary>
/// Whether the operation was successful
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Number of files deleted
/// </summary>
public int FilesDeleted { get; set; }
/// <summary>
/// Number of directories deleted
/// </summary>
public int DirectoriesDeleted { get; set; }
/// <summary>
/// List of errors encountered during deletion
/// </summary>
public List<string> Errors { get; set; } = new();
}