Beispiel #1
0
        /// <inheritdoc/>
        void IStorage.CollectChainOfStorages(IList <StorageUsingOptions> result, IList <IStorage> usedStorages, int level, CollectChainOfStoragesOptions options)
        {
#if DEBUG
            //Log($"result?.Count = {result?.Count}");
            //Log($"level = {level}");
#endif

            if (usedStorages.Contains(this))
            {
                return;
            }

            usedStorages.Add(this);

            //if(result.Any(p => p.Storage == this))
            //{
            //    return;
            //}

            level++;

            var item = new StorageUsingOptions()
            {
                Priority               = level,
                Storage                = this,
                UseFacts               = true,
                UseProductions         = true,
                UseAdditionalInstances = true
            };

            if (options != null)
            {
                if (options.UseFacts.HasValue)
                {
                    item.UseFacts = options.UseFacts.Value;
                }
            }

            result.Add(item);

            lock (_lockObj)
            {
                var parentsList = _realStorageContext.Parents;

                if (parentsList.Any())
                {
                    foreach (var parent in parentsList)
                    {
                        parent.CollectChainOfStorages(result, usedStorages, level, options);
                    }
                }
            }
        }
Beispiel #2
0
        /// <inheritdoc/>
        void IStorage.CollectChainOfStorages(IList <StorageUsingOptions> result, IList <IStorage> usedStorages, int level, CollectChainOfStoragesOptions options)
        {
            level++;

            var item = new StorageUsingOptions()
            {
                Priority               = level,
                Storage                = this,
                UseFacts               = true,
                UseProductions         = true,
                UseAdditionalInstances = true
            };

            if (options != null)
            {
                if (options.UseFacts.HasValue)
                {
                    item.UseFacts = options.UseFacts.Value;
                }
            }

            result.Add(item);
        }