QueryCachePackageHashOperation.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System.IO;
  2. namespace YooAsset
  3. {
  4. internal class QueryCachePackageHashOperation : AsyncOperationBase
  5. {
  6. private enum ESteps
  7. {
  8. None,
  9. LoadCachePackageHashFile,
  10. Done,
  11. }
  12. private readonly string _packageName;
  13. private readonly string _packageVersion;
  14. private ESteps _steps = ESteps.None;
  15. /// <summary>
  16. /// 包裹哈希值
  17. /// </summary>
  18. public string PackageHash { private set; get; }
  19. public QueryCachePackageHashOperation(string packageName, string packageVersion)
  20. {
  21. _packageName = packageName;
  22. _packageVersion = packageVersion;
  23. }
  24. internal override void Start()
  25. {
  26. _steps = ESteps.LoadCachePackageHashFile;
  27. }
  28. internal override void Update()
  29. {
  30. if (_steps == ESteps.None || _steps == ESteps.Done)
  31. return;
  32. if (_steps == ESteps.LoadCachePackageHashFile)
  33. {
  34. string filePath = PersistentTools.GetPersistent(_packageName).GetSandboxPackageHashFilePath(_packageVersion);
  35. if (File.Exists(filePath) == false)
  36. {
  37. _steps = ESteps.Done;
  38. Status = EOperationStatus.Failed;
  39. Error = $"Cache package hash file not found : {filePath}";
  40. return;
  41. }
  42. PackageHash = FileUtility.ReadAllText(filePath);
  43. if (string.IsNullOrEmpty(PackageHash))
  44. {
  45. _steps = ESteps.Done;
  46. Status = EOperationStatus.Failed;
  47. Error = $"Cache package hash file content is empty !";
  48. }
  49. else
  50. {
  51. _steps = ESteps.Done;
  52. Status = EOperationStatus.Succeed;
  53. }
  54. }
  55. }
  56. }
  57. }