Beispiel #1
0
        private void HandleCacheTask(CacheFileOperationTask task)
        {
            switch (task.Type)
            {
            case CacheFileOperation.SaveTempEntry:
                SaveTempEntry((CacheFileSaveEntryTaskData)task.Data);
                break;

            case CacheFileOperation.SaveManifest:
                SaveManifest();
                break;

            case CacheFileOperation.RemoveManifestEntries:
                RemoveManifestEntries((HashSet <Hash128>)task.Data);
                break;

            case CacheFileOperation.RemoveManifestEntryAndTempFile:
                RemoveManifestEntryAndTempFile((Hash128)task.Data);
                break;

            case CacheFileOperation.FlushToArchive:
                FlushToArchive();
                break;

            case CacheFileOperation.Synchronize:
                ((ManualResetEvent)task.Data).Set();
                break;

            default:
                throw new NotImplementedException($"{task.Type}");
            }
        }
Beispiel #2
0
 /// <summary>
 /// Processes a shader cache background operation.
 /// </summary>
 /// <param name="task">Task to process</param>
 private void ProcessTask(CacheFileOperationTask task)
 {
     switch (task.Type)
     {
     case CacheFileOperation.AddShader:
         AddShaderData data = (AddShaderData)task.Data;
         try
         {
             _hostStorage.AddShader(_context, data.Program, data.HostCode);
         }
         catch (DiskCacheLoadException diskCacheLoadException)
         {
             Logger.Error?.Print(LogClass.Gpu, $"Error writing shader to disk cache. {diskCacheLoadException.Message}");
         }
         catch (IOException ioException)
         {
             Logger.Error?.Print(LogClass.Gpu, $"Error writing shader to disk cache. {ioException.Message}");
         }
         break;
     }
 }