private FileToAssetsMapping[] GetDependenciesForAssets(FileToAssetsMapping[] fileToAssetsMappings, CreatedDependencyCache createdDependencyCache, ProgressBase progress) { string[] pathes = NodeDependencyLookupUtility.GetAllAssetPathes(progress, true); long[] timestamps = NodeDependencyLookupUtility.GetTimeStampsForFiles(pathes); List <AssetResolverData> data = new List <AssetResolverData>(); foreach (CreatedResolver resolverUsage in createdDependencyCache.ResolverUsages) { if (!(resolverUsage.Resolver is IAssetToFileDependencyResolver)) { continue; } IAssetToFileDependencyResolver resolver = (IAssetToFileDependencyResolver)resolverUsage.Resolver; HashSet <string> changedAssets = GetChangedAssetIds(pathes, timestamps, fileToAssetsMappings); data.Add(new AssetResolverData { ChangedAssets = changedAssets, Resolver = resolver }); resolver.Initialize(this, changedAssets, progress); } Dictionary <string, FileToAssetsMapping> nodeDict = RelationLookup.RelationLookupBuilder.ConvertToDictionary(fileToAssetsMappings); foreach (AssetResolverData resolverData in data) { GetDependenciesForAssetsInResolver(resolverData.ChangedAssets, resolverData.Resolver as IAssetToFileDependencyResolver, nodeDict, progress); } return(nodeDict.Values.ToArray()); }
private FileToAssetNode[] GetDependenciesForAssets(FileToAssetNode[] fileToAssetNodes, CreatedDependencyCache createdDependencyCache, ProgressBase progress) { string[] pathes = NodeDependencyLookupUtility.GetAllAssetPathes(progress, true); long[] timestamps = NodeDependencyLookupUtility.GetTimeStampsForFiles(pathes); List <AssetResolverData> data = new List <AssetResolverData>(); _hierarchyTraverser.Clear(); foreach (CreatedResolver resolverUsage in createdDependencyCache.ResolverUsages) { if (!(resolverUsage.Resolver is IAssetDependencyResolver)) { continue; } IAssetDependencyResolver resolver = (IAssetDependencyResolver)resolverUsage.Resolver; HashSet <string> changedAssets = GetChangedAssetIdsForResolver(resolver, pathes, timestamps, _fileToAssetNodes); data.Add(new AssetResolverData { ChangedAssets = changedAssets, Resolver = resolver }); resolver.Initialize(this, changedAssets, progress); } // Execute the searcher for all registered subsystems here to find hierarchy and property pathes _hierarchyTraverser.Initialize(progress); _hierarchyTraverser.Search(); Dictionary <string, FileToAssetNode> nodeDict = RelationLookup.RelationLookupBuilder.ConvertToDictionary(fileToAssetNodes); foreach (AssetResolverData resolverData in data) { GetDependenciesForAssetsInResolver(resolverData.ChangedAssets, resolverData.Resolver as IAssetDependencyResolver, nodeDict, progress); } return(nodeDict.Values.ToArray()); }
public void UpdateFromDefinition(ResolverUsageDefinitionList definitionList) { ResetCacheUsages(); foreach (ResolverUsageDefinitionList.Entry entry in definitionList.CacheUsages) { string cacheTypeFullName = entry.CacheType.FullName; if (!CreatedCaches.ContainsKey(cacheTypeFullName)) { IDependencyCache cache = NodeDependencyLookupUtility.InstantiateClass <IDependencyCache>(entry.CacheType); CreatedDependencyCache createdCache = new CreatedDependencyCache(cache); CreatedCaches.Add(cacheTypeFullName, createdCache); } CreatedCaches[cacheTypeFullName].AddResolver(entry.ResolverType, entry.ConnectionTypes); } ConnectionTypeLookup = new ConnectionTypeLookup(GetCaches()); NodeHandlerLookup = NodeDependencyLookupUtility.BuildNodeHandlerLookup(); }
public void Initialize(CreatedDependencyCache createdDependencyCache) { _createdDependencyCache = createdDependencyCache; }
public static bool IsResolverActive(CreatedDependencyCache createdCache, string id, string connectionType) { Dictionary <string, CreatedResolver> resolverUsagesLookup = createdCache.ResolverUsagesLookup; return(resolverUsagesLookup.ContainsKey(id) && resolverUsagesLookup[id].ConnectionTypes.Contains(connectionType)); }