123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- using System;
- using System.IO;
- using System.Collections;
- using System.Collections.Generic;
- namespace YooAsset
- {
- internal class PackageCache
- {
- internal class RecordWrapper
- {
- public string InfoFilePath { private set; get; }
- public string DataFilePath { private set; get; }
- public string DataFileCRC { private set; get; }
- public long DataFileSize { private set; get; }
- public RecordWrapper(string infoFilePath, string dataFilePath, string dataFileCRC, long dataFileSize)
- {
- InfoFilePath = infoFilePath;
- DataFilePath = dataFilePath;
- DataFileCRC = dataFileCRC;
- DataFileSize = dataFileSize;
- }
- }
- private readonly Dictionary<string, RecordWrapper> _wrappers = new Dictionary<string, RecordWrapper>();
- /// <summary>
- /// 包裹名称
- /// </summary>
- public string PackageName { private set; get; }
- public PackageCache(string packageName)
- {
- PackageName = packageName;
- }
- /// <summary>
- /// 清空所有数据
- /// </summary>
- public void ClearAll()
- {
- _wrappers.Clear();
- }
- /// <summary>
- /// 获取缓存文件总数
- /// </summary>
- public int GetCachedFilesCount()
- {
- return _wrappers.Count;
- }
- /// <summary>
- /// 查询缓存记录
- /// </summary>
- public bool IsCached(string cacheGUID)
- {
- return _wrappers.ContainsKey(cacheGUID);
- }
- /// <summary>
- /// 记录验证结果
- /// </summary>
- public void Record(string cacheGUID, RecordWrapper wrapper)
- {
- if (_wrappers.ContainsKey(cacheGUID) == false)
- {
- _wrappers.Add(cacheGUID, wrapper);
- }
- else
- {
- throw new Exception("Should never get here !");
- }
- }
- /// <summary>
- /// 丢弃验证结果
- /// </summary>
- public void Discard(string cacheGUID)
- {
- if (_wrappers.ContainsKey(cacheGUID))
- {
- _wrappers.Remove(cacheGUID);
- }
- }
- /// <summary>
- /// 获取记录对象
- /// </summary>
- public RecordWrapper TryGetWrapper(string cacheGUID)
- {
- if (_wrappers.TryGetValue(cacheGUID, out RecordWrapper value))
- return value;
- else
- return null;
- }
- internal List<string> GetAllKeys()
- {
- List<string> keys = new List<string>(_wrappers.Keys.Count);
- var keyCollection = _wrappers.Keys;
- foreach (var key in keyCollection)
- {
- keys.Add(key);
- }
- return keys;
- }
- }
- }
|