Esempio n. 1
0
 public void Add(PollNode node)
 {
     lock (nodes)
     {
         if (!nodes.ContainsKey(node.GetId()))
         {
             nodes.Add(node.GetId(), node);
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// построение
        /// </summary>
        /// <param name="root"></param>
        /// <returns></returns>
        private List <List <PollNodePathWrapper> > BuildPath(PollNode root)
        {
            if (root == null)
            {
                return(null);
            }
            if (root.IsFinalNode())
            {
                return(new List <List <PollNodePathWrapper> >()
                {
                    new List <PollNodePathWrapper>()
                    {
                        new PollNodePathWrapper(root)
                    }
                });
            }

            var allPaths = new List <List <PollNodePathWrapper> >();

            foreach (var relation in RelationManager.Instance.GetOutputs(root.GetId(), "contains"))
            {
                var node = NodeManager.Instance.GetById(relation.GetEndId());
                if (node.IsDisabled())
                {
                    continue;
                }

                //пропуск закрытых окон
                //if (node is Csd.CsdConnectionNode && !(node as Csd.CsdConnectionNode).InWindow(DateTime.Now)) continue;

                var paths = BuildPath(node);
                if (paths == null || !paths.Any())
                {
                    continue;
                }

                foreach (var path in paths)
                {
                    var newpath = new List <PollNodePathWrapper>()
                    {
                        new PollNodePathWrapper(root)
                    };
                    path.First().Left = relation.GetPort();
                    newpath.AddRange(path);
                    allPaths.Add(newpath);
                }
            }
            return(allPaths);
        }