Example #1
0
        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());
        }
Example #2
0
        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());
        }
Example #3
0
        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();
        }
Example #4
0
 public void Initialize(CreatedDependencyCache createdDependencyCache)
 {
     _createdDependencyCache = createdDependencyCache;
 }
Example #5
0
        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));
        }