Esempio n. 1
0
        internal void Update(ICachableBundle data, IAccessPoint dir)
        {
            BundleInfo.Apply(data);
            var path = dir.ToLocation(BundleInfo.Path);

            FileInfo = new FileInfo(path.FullPath);
        }
Esempio n. 2
0
 /// <summary>
 /// キャッシュとバージョンの書き込み
 /// </summary>
 public virtual void Save(ICachableBundle data)
 {
     //	ファイルの書き込み
     if (OnSaveVersion?.Invoke(data) ?? false)
     {
         SaveVersion(data);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 取得
        /// </summary>
        public string GetVersion(ICachableBundle bundle)
        {
            var value = Get(bundle);

            if (value != null)
            {
                return(value.BundleInfo.Version);
            }
            return(string.Empty);
        }
Esempio n. 4
0
        /// <summary>
        /// 保存バージョンを破棄
        /// </summary>
        private void RemoveVersion(ICachableBundle data)
        {
            IsDirty = true;
            ChipstarLog.Log_RemoveLocalVersion(data);
            var storageData = Get(data);

            if (storageData == null)
            {
                return;
            }
            m_runtimeTable.Remove(data.Identifier);
        }
Esempio n. 5
0
        /// <summary>
        /// アセットバンドルの削除
        /// </summary>
        private void DeleteBundle(ICachableBundle data)
        {
            var location = GetSaveLocation(data);
            var path     = location.FullPath;

            if (!File.Exists(path))
            {
                //	存在しないなら削除しない
                return;
            }
            ChipstarLog.Log_DeleteLocalBundle(data);
            File.Delete(path);
        }
Esempio n. 6
0
        internal bool IsBreak(ICachableBundle data)
        {
            if (FileInfo == null || !FileInfo.Exists)
            {
                return(true);
            }
            if (data.PreviewSize != FileInfo.Length)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 7
0
        public bool IsBreakFile(ICachableBundle bundleData)
        {
            var data = Get(bundleData);

            if (data == null)
            {
                // まだ持ってない
                return(false);
            }
            var isBreak = data.IsBreak(bundleData);

            if (isBreak)
            {
                ChipstarLog.Log_MaybeFileBreak(data.FileInfo, bundleData.PreviewSize);
            }
            return(isBreak);
        }
Esempio n. 8
0
        /// <summary>
        /// バージョンの保存
        /// </summary>
        private void SaveVersion(ICachableBundle data)
        {
            IsDirty = true;
            ChipstarLog.Log_SaveLocalVersion(data);
            //  ストレージにあるかどうか
            var storageData = Get(data);

            if (storageData != null)
            {
                // 情報変更
                storageData.DeleteFile();
                storageData.Update(data, m_saveDirRoot);
                return;
            }
            // 追加
            m_runtimeTable[data.Identifier] = new CachedFileData(
                new LocalBundleData(data.Identifier, data.Path, data.Hash, data.Crc),
                m_saveDirRoot
                );
        }
Esempio n. 9
0
        /// <summary>
        /// キャッシュ保持
        /// </summary>
        public bool HasStorage(ICachableBundle bundleData)
        {
            var data = Get(bundleData);

            if (data == null)
            {
                return(false);
            }
            // 破損チェック / 一旦サイズチェックだけ
            if (IsBreakFile(bundleData))
            {
                return(false);
            }
            // バージョン不一致
            if (!data.IsMatchVersion(bundleData))
            {
                ChipstarLog.Log_MissMatchVersion(bundleData.Path, data.ToString(), bundleData.Hash.ToString());
                return(false);
            }
            //
            return(true);
        }
Esempio n. 10
0
 /// <summary>
 /// バージョンを上書き
 /// </summary>
 public void Apply(ICachableBundle bundle)
 {
     Version = bundle.Hash;
     Crc     = bundle.Crc;
     Path    = bundle.Path;
 }
Esempio n. 11
0
 /// <summary>
 /// キャッシュ済みかどうか
 /// </summary>
 public virtual bool IsMatchVersion(ICachableBundle cache)
 {
     return(IsMatchHash(cache.Hash) && IsMatchCRC(cache.Crc));
 }
Esempio n. 12
0
 internal static void Log_DeleteLocalBundle(ICachableBundle data)
 {
     Log(string.Format("Delete Cache File : {0}", data.Path));
 }
Esempio n. 13
0
 internal static void Log_RemoveLocalVersion(ICachableBundle data)
 {
     Log(string.Format("Delete File Version : {0}", data.ToString()));
 }
Esempio n. 14
0
 /// <summary>
 /// 場所の取得
 /// </summary>
 public IAccessLocation GetSaveLocation(ICachableBundle data)
 {
     return(m_saveDirRoot.ToLocation(data.Path));
 }
Esempio n. 15
0
 /// <summary>
 /// 削除
 /// </summary>
 public virtual void Delete(ICachableBundle data)
 {
     DeleteBundle(data);
     RemoveVersion(data);
 }
Esempio n. 16
0
 /// <summary>
 ///
 /// </summary>
 public static string ToCacheDataStr(this ICachableBundle self)
 {
     return(string.Format("{0}[{1}][{2}]", self.Path, self.Hash, self.Crc));
 }
Esempio n. 17
0
 internal bool IsMatchVersion(ICachableBundle bundleData)
 {
     return(BundleInfo.IsMatchVersion(bundleData));
 }
Esempio n. 18
0
 private CachedFileData Get(ICachableBundle bundle)
 {
     m_runtimeTable.TryGetValue(bundle.Identifier, out var value);
     return(value);
 }