Exemplo n.º 1
0
        public List<ulong> GetAllConnections3(params ulong[] linksToConnect)
        {
            return _sync.ExecuteReadOperation(() =>
            {
                var results = new BitString((long)_links.Total + 1); // new BitArray((int)_links.Total + 1);

                if (linksToConnect.Length > 0)
                {
                    EnsureEachLinkExists(_links, linksToConnect);

                    var collector1 = new AllUsagesCollector2(_links, results);
                    collector1.Collect(linksToConnect[0]);

                    for (int i = 1; i < linksToConnect.Length; i++)
                    {
                        var next = new BitString((long)_links.Total + 1); //new BitArray((int)_links.Total + 1);
                        var collector = new AllUsagesCollector2(_links, next);
                        collector.Collect(linksToConnect[i]);

                        results = results.And(next);
                    }
                }

                return results.GetSetUInt64Indices();
            });
        }