public CASCHandlerBase(CASCConfig config, BackgroundWorkerEx worker) { Config = config; Logger.WriteLine("CASCHandlerBase: loading CDN indices..."); using (var _ = new PerfCounter("CDNIndexHandler.Initialize()")) { CDNIndex = CDNIndexHandler.Initialize(config, worker); } Logger.WriteLine("CASCHandlerBase: loaded {0} CDN indexes", CDNIndex.Count); if (!config.OnlineMode) { CDNIndexHandler.Cache.Enabled = false; Logger.WriteLine("CASCHandlerBase: loading local indices..."); using (var _ = new PerfCounter("LocalIndexHandler.Initialize()")) { LocalIndex = LocalIndexHandler.Initialize(config, worker); } Logger.WriteLine("CASCHandlerBase: loaded {0} local indexes", LocalIndex.Count); } }
public static LocalIndexHandler Initialize(CASCConfig config, BackgroundWorkerEx worker) { var handler = new LocalIndexHandler(); var idxFiles = GetIdxFiles(config); if (idxFiles.Count == 0) { throw new FileNotFoundException("idx files missing!"); } worker?.ReportProgress(0, "Loading \"local indexes\"..."); int idxIndex = 0; foreach (var idx in idxFiles) { handler.ParseIndex(idx); worker?.ReportProgress((int)(++idxIndex / (float)idxFiles.Count * 100)); } Logger.WriteLine("LocalIndexHandler: loaded {0} indexes", handler.Count); return(handler); }
public static LocalIndexHandler Initialize(CASCConfig config, BackgroundWorkerEx worker) { var handler = new LocalIndexHandler(); var idxFiles = GetIdxFiles(config); if (idxFiles.Count == 0) throw new FileNotFoundException("idx files missing!"); worker?.ReportProgress(0, "Loading \"local indexes\"..."); int idxIndex = 0; foreach (var idx in idxFiles) { handler.ParseIndex(idx); worker?.ReportProgress((int)(++idxIndex / (float)idxFiles.Count * 100)); } Logger.WriteLine("LocalIndexHandler: loaded {0} indexes", handler.Count); return handler; }
public void Clear() { CDNIndex.Clear(); CDNIndex = null; foreach (var stream in DataStreams) stream.Value.Close(); DataStreams.Clear(); EncodingHandler.Clear(); EncodingHandler = null; if (InstallHandler != null) { InstallHandler.Clear(); InstallHandler = null; } if (LocalIndex != null) { LocalIndex.Clear(); LocalIndex = null; } RootHandler.Clear(); RootHandler = null; if (DownloadHandler != null) { DownloadHandler.Clear(); DownloadHandler = null; } }
private CASCHandler(CASCConfig config, BackgroundWorkerEx worker) { Config = config; Logger.WriteLine("CASCHandler: loading CDN indices..."); using (var _ = new PerfCounter("CDNIndexHandler.Initialize()")) { CDNIndex = CDNIndexHandler.Initialize(config, worker); } Logger.WriteLine("CASCHandler: loaded {0} CDN indexes", CDNIndex.Count); if (!config.OnlineMode) { CDNIndexHandler.Cache.Enabled = false; Logger.WriteLine("CASCHandler: loading local indices..."); using (var _ = new PerfCounter("LocalIndexHandler.Initialize()")) { LocalIndex = LocalIndexHandler.Initialize(config, worker); } Logger.WriteLine("CASCHandler: loaded {0} local indexes", LocalIndex.Count); } Logger.WriteLine("CASCHandler: loading encoding data..."); using (var _ = new PerfCounter("new EncodingHandler()")) { using (var fs = OpenEncodingFile()) EncodingHandler = new EncodingHandler(fs, worker); } Logger.WriteLine("CASCHandler: loaded {0} encoding data", EncodingHandler.Count); if ((CASCConfig.LoadFlags & LoadFlags.Download) != 0) { Logger.WriteLine("CASCHandler: loading download data..."); using (var _ = new PerfCounter("new DownloadHandler()")) { using (var fs = OpenDownloadFile()) DownloadHandler = new DownloadHandler(fs, worker); } Logger.WriteLine("CASCHandler: loaded {0} download data", EncodingHandler.Count); } Logger.WriteLine("CASCHandler: loading root data..."); using (var _ = new PerfCounter("new RootHandler()")) { using (var fs = OpenRootFile()) { if (config.GameType == CASCGameType.S2 || config.GameType == CASCGameType.HotS) RootHandler = new MNDXRootHandler(fs, worker); else if (config.GameType == CASCGameType.D3) RootHandler = new D3RootHandler(fs, worker, this); else if (config.GameType == CASCGameType.WoW) RootHandler = new WowRootHandler(fs, worker); else if (config.GameType == CASCGameType.Agent) RootHandler = new AgentRootHandler(fs, worker); else if (config.GameType == CASCGameType.Hearthstone) RootHandler = new HSRootHandler(fs, worker); else if (config.GameType == CASCGameType.Overwatch) RootHandler = new OWRootHandler(fs, worker, this); else throw new Exception("Unsupported game " + config.BuildUID); } } Logger.WriteLine("CASCHandler: loaded {0} root data", RootHandler.Count); if ((CASCConfig.LoadFlags & LoadFlags.Install) != 0) { Logger.WriteLine("CASCHandler: loading install data..."); using (var _ = new PerfCounter("new InstallHandler()")) { using (var fs = OpenInstallFile()) InstallHandler = new InstallHandler(fs, worker); } Logger.WriteLine("CASCHandler: loaded {0} install data", InstallHandler.Count); } }