コード例 #1
0
        IDisposable IHandlersManager.AddLink(string fromMethod, string toMethod)
        {
            var source = _descriptors.FirstOrDefault(z => z.Method == fromMethod);

            if (source == null)
            {
                if (_descriptors.Any(z => z.Method == toMethod))
                {
                    throw new ArgumentException(
                              $"Could not find descriptor for '{fromMethod}', but I did find one for '{toMethod}'.  Did you mean to link '{toMethod}' to '{fromMethod}' instead?", fromMethod
                              );
                }

                throw new ArgumentException(
                          $"Could not find descriptor for '{fromMethod}', has it been registered yet?  Descriptors must be registered before links can be created!", nameof(fromMethod)
                          );
            }

            HandlerDescriptor descriptor = null;

            descriptor = GetDescriptor(
                toMethod,
                source.HandlerType,
                source.Handler,
                source.RequestProcessType.HasValue ? new JsonRpcHandlerOptions {
                RequestProcessType = source.RequestProcessType.Value
            } : null,
                source.TypeDescriptor,
                source.HandlerType
                );
            Interlocked.Exchange(ref _descriptors, _descriptors.Add(descriptor));

            return(descriptor);
        }
コード例 #2
0
        private static void UpdateProduct(ImmutableHashSet <ParsedProduct> toUpdateParsedProducts, Product productToUpdate)
        {
            var parsedProduct = toUpdateParsedProducts.FirstOrDefault(u => ProductDataComparer.IsParsedProductEqualToProduct(u, productToUpdate))
                                ?? throw new Exception("Cannot find any parsed product");

            productToUpdate.Price = parsedProduct.Price;
            productToUpdate.Mass  = parsedProduct.Mass;
        }
コード例 #3
0
        public ZoneSession GetSessionByCharacter(Character character)
        {
            if (character == Character.None)
            {
                return(null);
            }

            return(_sessions.FirstOrDefault(s => s.Character == character));
        }
コード例 #4
0
ファイル: TestComposition.cs プロジェクト: waiyiptam/roslyn
        public TestComposition WithAssemblies(ImmutableHashSet <Assembly> assemblies)
        {
            if (assemblies == Assemblies)
            {
                return(this);
            }

            var testAssembly = assemblies.FirstOrDefault(IsTestAssembly);

            Contract.ThrowIfFalse(testAssembly == null, $"Test assemblies are not allowed in test composition: {testAssembly}. Specify explicit test parts instead.");

            return(new TestComposition(assemblies, Parts, ExcludedPartTypes));
        public override IDependency BeforeAdd(
            string projectPath,
            ITargetFramework targetFramework,
            IDependency dependency,
            ImmutableDictionary <string, IDependency> .Builder worldBuilder,
            ImmutableHashSet <IDependency> .Builder topLevelBuilder,
            Dictionary <string, IProjectDependenciesSubTreeProvider> subTreeProviders,
            HashSet <string> projectItemSpecs,
            out bool filterAnyChanges)
        {
            filterAnyChanges = false;
            IDependency resultDependency = dependency;

            var matchingDependency = topLevelBuilder.FirstOrDefault(
                x => !x.Id.Equals(dependency.Id, StringComparison.OrdinalIgnoreCase) &&
                x.ProviderType.Equals(dependency.ProviderType, StringComparison.OrdinalIgnoreCase) &&
                x.Caption.Equals(dependency.Caption, StringComparison.OrdinalIgnoreCase));

            // if found node with same caption, or if there were nodes with same caption but with Alias already applied
            var shouldApplyAlias = (matchingDependency == null)
                ? topLevelBuilder.Any(
                x => !x.Id.Equals(dependency.Id) &&
                x.ProviderType.Equals(dependency.ProviderType, StringComparison.OrdinalIgnoreCase) &&
                x.Caption.Equals(
                    string.Format(CultureInfo.CurrentCulture, "{0} ({1})", dependency.Caption, x.OriginalItemSpec),
                    StringComparison.OrdinalIgnoreCase))
                : true;

            if (shouldApplyAlias)
            {
                filterAnyChanges = true;
                if (matchingDependency != null)
                {
                    matchingDependency = matchingDependency.SetProperties(caption: matchingDependency.Alias);
                    worldBuilder.Remove(matchingDependency.Id);
                    worldBuilder.Add(matchingDependency.Id, matchingDependency);
                    topLevelBuilder.Remove(matchingDependency);
                    topLevelBuilder.Add(matchingDependency);
                }

                resultDependency = resultDependency.SetProperties(caption: dependency.Alias);
            }

            return(resultDependency);
        }
コード例 #6
0
ファイル: TreeView.cs プロジェクト: sabrogden/logjoint
        TreeNode GetPrimarySelectedNode(ImmutableHashSet <TreeNode> nodesSet)
        {
            TreeNode node;

            if (nodesSet.Contains(primarySelectionCandidate1))
            {
                node = primarySelectionCandidate1;
            }
            else if (nodesSet.Contains(primarySelectionCandidate2))
            {
                node = primarySelectionCandidate2;
            }
            else
            {
                node = nodesSet.FirstOrDefault();
            }
            return(node);
        }
コード例 #7
0
ファイル: ConsulState.cs プロジェクト: similarweb/consul-rx
        public bool TryUpdateKVNodes(IEnumerable <KeyValueNode> kvNodes, out ConsulState updatedState)
        {
            var missingKeyPrefixes = _missingKeyPrefixes;

            if (kvNodes.Any())
            {
                var noLongerMissingKeyPrefix = _missingKeyPrefixes.FirstOrDefault(keyPrefix => kvNodes.First().FullKey.StartsWith(keyPrefix));
                if (noLongerMissingKeyPrefix != null)
                {
                    missingKeyPrefixes = _missingKeyPrefixes.Remove(noLongerMissingKeyPrefix);
                }
            }

            if (_kvStore.TryUpdate(kvNodes, out var updatedKvStore))
            {
                updatedState = new ConsulState(_services, updatedKvStore, missingKeyPrefixes);
                return(true);
            }
            updatedState = null;
            return(false);
        }
コード例 #8
0
        private NugetDependenciesChange ProcessResolvedChanges(IProjectSubscriptionUpdate projectSubscriptionUpdate,
                                                               ImmutableHashSet <IDependencyNode> rootTreeNodes)
        {
            var changes         = projectSubscriptionUpdate.ProjectChanges;
            var resolvedChanges = ResolvedReferenceRuleNames.Where(x => changes.Keys.Contains(x))
                                  .Select(ruleName => changes[ruleName])
                                  .ToImmutableHashSet();
            var dependenciesChange = new NugetDependenciesChange();
            var newDependencies    = new HashSet <DependencyMetadata>();

            foreach (var change in resolvedChanges)
            {
                if (!change.Difference.AnyChanges)
                {
                    continue;
                }

                foreach (string removedItemSpec in change.Difference.RemovedItems)
                {
                    var metadata = CurrentSnapshot.RemoveDependency(removedItemSpec);
                    var itemNode = rootTreeNodes.FirstOrDefault(
                        x => x.Id.ItemSpec.Equals(removedItemSpec, StringComparison.OrdinalIgnoreCase));
                    if (itemNode != null)
                    {
                        dependenciesChange.RemovedNodes.Add(metadata);
                    }
                }

                foreach (string changedItemSpec in change.Difference.ChangedItems)
                {
                    var properties = GetProjectItemProperties(change.After, changedItemSpec);
                    if (properties == null)
                    {
                        continue;
                    }

                    var metadata = CurrentSnapshot.UpdateDependency(changedItemSpec, properties);
                    var itemNode = rootTreeNodes.FirstOrDefault(
                        x => x.Id.ItemSpec.Equals(changedItemSpec, StringComparison.OrdinalIgnoreCase));
                    if (itemNode != null)
                    {
                        dependenciesChange.UpdatedNodes.Add(metadata);
                    }
                }

                foreach (string addedItemSpec in change.Difference.AddedItems)
                {
                    var properties = GetProjectItemProperties(change.After, addedItemSpec);
                    if (properties == null)
                    {
                        continue;
                    }

                    var newDependency = CurrentSnapshot.AddDependency(addedItemSpec, properties);
                    newDependencies.Add(newDependency);
                }
            }

            // Note: currently deisgn time build is limited and is not aware of conditional on TFM
            // PackageReference items: Unresolved PackageReference items for conditional TFMs are not sent.
            // Thus we will display conditional PackageReferences if they were resolved and are in assets.json.
            // This limitation should go away, when we have final design for cross target dependencies and
            // DesignTime build.
            var allTargetsDependencies = CurrentSnapshot.GetUniqueTopLevelDependencies();

            if (allTargetsDependencies.Count == 0)
            {
                return(dependenciesChange);
            }

            var addedTopLevelDependencies = newDependencies.Where(
                x => allTargetsDependencies.Contains(x.ItemSpec) && !x.IsImplicitlyDefined);

            foreach (var addedDependency in addedTopLevelDependencies)
            {
                dependenciesChange.AddedNodes.Add(addedDependency);
            }

            return(dependenciesChange);
        }