Beispiel #1
0
        public void LinkNode(INode node)
        {
            var latestNode = KeyNodes.Last().Key;

            if (latestNode == null)
            {
                return;
            }

            if (latestNode is ArrayNode)
            {
                var arrayNode = latestNode as ArrayNode;
                //arrayNode.Values
            }
            else if (latestNode is KeyArrayNode)
            {
                var keyArrayNode = latestNode as KeyArrayNode;
                //keyArrayNode.Values
            }
            else if (latestNode is KeyValueNode)
            {
                var keyValueNode = latestNode as KeyValueNode;
                if (keyValueNode.Value == null)
                {
                    keyValueNode.Value = node;
                }
            }
            else if (latestNode is ListKeyValueNode)
            {
                var listKeyValueNode = latestNode as ListKeyValueNode;
                if (listKeyValueNode.Values == null)
                {
                }
            }
        }
Beispiel #2
0
        // topologically sort the graph to work out calculation order
        public Dictionary <string, int> CalculateWeights()
        {
            var remainingNodes = new SortedSet <int>(Nodes.Select(n => n.ID).Union(KeyNodes.Select(k => k.Value.ID)));
            var markedNodes    = new SortedSet <int>();
            var processors     = Nodes.ToDictionary(n => n.ID, n => RFGraphDefinition.GetFullName(n.GraphName, n.Label));
            var visitOrder     = new List <int>();

            while (remainingNodes.Any())
            {
                var remainingNode = remainingNodes.First();
                Visit(remainingNode, markedNodes, remainingNodes, visitOrder);
            }

            var weights = new Dictionary <string, int>();
            int idx     = 1;

            visitOrder.Reverse();
            foreach (var node in visitOrder)
            {
                if (processors.ContainsKey(node))
                {
                    weights.Add(processors[node], idx++);
                }
            }
            return(weights);
        }
Beispiel #3
0
 public void ToggleSwitch(string name, bool on)
 {
     if (KeyNodes.ContainsKey(name))
     {
         Log.Info("{0} toggled as {1}", name, on);
         KeyNodes[name].SetActive(on);
     }
 }