public static TM_FileStorage queue_Save_GuidanceItemsCache(this TM_FileStorage tmFileStorage) { // do this on a separate thread so that we don't hang the current request if (thread_Save_GuidanceItemsCache.isNull()) { thread_Save_GuidanceItemsCache = O2Thread.mtaThread( () => { 1000.sleep(); tmFileStorage.save_GuidanceItemsToCache(); thread_Save_GuidanceItemsCache = null; }); } return(tmFileStorage); }
public static TM_FileStorage xmlDB_Load_GuidanceItems_and_Create_CacheFile(this TM_FileStorage tmFileStorage) { var tmXmlDatabase = tmFileStorage.tmXmlDatabase(); if (tmFileStorage.isNull() || tmXmlDatabase.isNull()) { return(tmFileStorage); } var pathXmlLibraries = tmFileStorage.Path_XmlLibraries; if (pathXmlLibraries.notNull() && pathXmlLibraries.notNull()) { lock (pathXmlLibraries) { "[TM_FileStorage] in xmlDB_Load_GuidanceItems, creating cache file".debug(); var o2Timer = new O2Timer("[TM_FileStorage] loaded GuidanceItems from disk").start(); //Load GuidanceItem from the disk foreach (var item in tmFileStorage.GuidanceExplorers_Paths) { var guidanceExplorer = item.Key; var pathToLibraryGuidanceItems = item.Value.parentFolder(); var libraryId = guidanceExplorer.library.name.guid(); "libraryId: {0} : {1}".info(libraryId, pathToLibraryGuidanceItems); var filesToLoad = pathToLibraryGuidanceItems.files(true, "*.xml"); tmXmlDatabase.xmlDB_Load_GuidanceItemsV3(libraryId, filesToLoad); } //save it to the local cache file (reduces load time from 8s to 0.5s) tmFileStorage.save_GuidanceItemsToCache(); tmXmlDatabase.ensureFoldersAndViewsIdsAreUnique(); tmXmlDatabase.removeMissingGuidanceItemsIdsFromViews(); o2Timer.stop(); } } return(tmFileStorage); }