|
@@ -17,7 +17,7 @@ namespace fis.Win.Dev.Managers.Modules.Ultra3D
|
|
|
|
|
|
public string FileName { get; set; }
|
|
|
|
|
|
- public byte[] FileBytes { get; set; }
|
|
|
+ public string FilePath { get; set; }
|
|
|
|
|
|
public FileAccessStatus FileAccessStatus { get; set; }
|
|
|
|
|
@@ -30,47 +30,27 @@ namespace fis.Win.Dev.Managers.Modules.Ultra3D
|
|
|
var fileInfo = GetVidNameFromUrl(fileUri);
|
|
|
ultra3DStorage = ultraStorage;
|
|
|
FileName = $"{fileId}{fileInfo.Item2}";
|
|
|
- var filePath = Path.Combine(ultra3DStorage.StoragePath, FileName);
|
|
|
- if (File.Exists(filePath))
|
|
|
+ FilePath = Path.Combine(ultra3DStorage.StoragePath, FileName);
|
|
|
+
|
|
|
+ if (File.Exists(FilePath))
|
|
|
{
|
|
|
- FileAccessStatus = FileAccessStatus.CachedInDiskOnly;
|
|
|
+ FileAccessStatus = FileAccessStatus.CachedOnDisk;
|
|
|
}
|
|
|
else {
|
|
|
FileAccessStatus = FileAccessStatus.ReadyToDownload;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public async Task<byte[]> ReadFromDisk()
|
|
|
- {
|
|
|
- FileAccessStatus = FileAccessStatus.ReadingCachedFile;
|
|
|
- FileBytes = await ultra3DStorage.ReadCacheFile(FileName);
|
|
|
- FileAccessStatus = FileAccessStatus.ReadCacheedFileInMemory;
|
|
|
- return FileBytes;
|
|
|
- }
|
|
|
-
|
|
|
public async Task<byte[]> ReadFromNetwork()
|
|
|
{
|
|
|
FileAccessStatus = FileAccessStatus.Downloading;
|
|
|
var bytes = await HttpHelper.httpClient.GetByteArrayAsync(FileUri);
|
|
|
- FileAccessStatus = FileAccessStatus.CachedInMemoryOnly;
|
|
|
+ await ultra3DStorage.WriteCacehFile(bytes, FileName);
|
|
|
+ FileAccessStatus = FileAccessStatus.CachedOnDisk;
|
|
|
return bytes;
|
|
|
}
|
|
|
|
|
|
|
|
|
- public async Task<byte[]> CacheFromNetwork()
|
|
|
- {
|
|
|
- FileAccessStatus = FileAccessStatus.Downloading;
|
|
|
- FileBytes = await HttpHelper.httpClient.GetByteArrayAsync(FileUri);
|
|
|
- FileAccessStatus = FileAccessStatus.CachedInMemoryOnly;
|
|
|
- return FileBytes;
|
|
|
- }
|
|
|
-
|
|
|
- public async void CacheToDisk()
|
|
|
- {
|
|
|
- await ultra3DStorage.WriteCacehFile(FileBytes, FileName);
|
|
|
- FileAccessStatus = FileAccessStatus.CachedInMemoryAndDisk;
|
|
|
- }
|
|
|
-
|
|
|
private Tuple<string,string> GetVidNameFromUrl(string url)
|
|
|
{
|
|
|
var fragments = url.Split('/');
|
|
@@ -90,19 +70,13 @@ namespace fis.Win.Dev.Managers.Modules.Ultra3D
|
|
|
internal enum FileAccessStatus
|
|
|
{
|
|
|
ReadyToDownload,
|
|
|
- Downloading,
|
|
|
- CachedInMemoryOnly,
|
|
|
- CachedInMemoryAndDisk,
|
|
|
-
|
|
|
- ///AlreadyCached
|
|
|
- CachedInDiskOnly,
|
|
|
- ReadingCachedFile,
|
|
|
- ReadCacheedFileInMemory
|
|
|
+ Downloading,
|
|
|
+ CachedOnDisk
|
|
|
}
|
|
|
|
|
|
internal class Ultr3dUnionWorkItems
|
|
|
{
|
|
|
- public string FileId { get; set; }
|
|
|
+ public string DataId { get; set; }
|
|
|
|
|
|
public Ultra3DFileWorkItem SurfaceWorkItem { get; set; }
|
|
|
|
|
@@ -117,35 +91,35 @@ namespace fis.Win.Dev.Managers.Modules.Ultra3D
|
|
|
//访问表面数据
|
|
|
if (SurfaceWorkItem.FileAccessStatus == FileAccessStatus.ReadyToDownload)
|
|
|
{
|
|
|
- await SurfaceWorkItem.CacheFromNetwork();
|
|
|
- SurfaceFileCanbeAccess?.Invoke(this,FileId);
|
|
|
- SurfaceWorkItem.CacheToDisk();
|
|
|
+ await SurfaceWorkItem.ReadFromNetwork();
|
|
|
+ SurfaceFileCanbeAccess?.Invoke(this,DataId);
|
|
|
}
|
|
|
|
|
|
- if (SurfaceWorkItem.FileAccessStatus == FileAccessStatus.CachedInDiskOnly)
|
|
|
+ if (SurfaceWorkItem.FileAccessStatus == FileAccessStatus.CachedOnDisk)
|
|
|
{
|
|
|
- await SurfaceWorkItem.ReadFromDisk();
|
|
|
- SurfaceFileCanbeAccess?.Invoke(this, FileId);
|
|
|
+ SurfaceFileCanbeAccess?.Invoke(this, DataId);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//访问模型数据
|
|
|
|
|
|
- if (SurfaceWorkItem.FileAccessStatus == FileAccessStatus.ReadyToDownload)
|
|
|
+ if (MdFileWorkItem.FileAccessStatus == FileAccessStatus.ReadyToDownload)
|
|
|
{
|
|
|
- await MdFileWorkItem.CacheFromNetwork();
|
|
|
- ModelFileCanbeAccess?.Invoke(this, FileId);
|
|
|
- MdFileWorkItem.CacheToDisk();
|
|
|
+ await MdFileWorkItem.ReadFromNetwork();
|
|
|
+ ModelFileCanbeAccess?.Invoke(this, DataId);
|
|
|
}
|
|
|
|
|
|
- if (SurfaceWorkItem.FileAccessStatus == FileAccessStatus.CachedInDiskOnly)
|
|
|
+ if (MdFileWorkItem.FileAccessStatus == FileAccessStatus.CachedOnDisk)
|
|
|
{
|
|
|
- await MdFileWorkItem.ReadFromDisk();
|
|
|
- ModelFileCanbeAccess?.Invoke(this, FileId);
|
|
|
+ ModelFileCanbeAccess?.Invoke(this, DataId);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public Ultr3dUnionWorkItems(string fileId, Ultra3DFileWorkItem surface, Ultra3DFileWorkItem model)
|
|
|
{
|
|
|
- FileId = fileId;
|
|
|
+ DataId = fileId;
|
|
|
SurfaceWorkItem=surface;
|
|
|
MdFileWorkItem = model;
|
|
|
}
|