예제 #1
0
        private void DrawNodeShape(Canvas canvas, Point pointPlace, KeyValuePair <int, List <NodeTopological> > levelNode, NodeTopological currNode)
        {
            NetworkNodeShape networkNodeShape = new NetworkNodeShape()
            {
                Key = currNode.Key
            };

            Point pointText = new Point(pointPlace.X - networkNodeShape.Width / 2, pointPlace.Y - networkNodeShape.Height / 2);

            string toShowDesc = currNode.NodeInfo.Key;
            string toShowName = currNode.NodeInfo.typeDesc;

            networkNodeShape.rShowNode.Fill = new SolidColorBrush(Colors.Red);
            networkNodeShape.txtDesc.Text   = toShowDesc;
            networkNodeShape.txtName.Text   = toShowName;
            networkNodeShape.PointNow       = pointText;

            canvas.Children.Add(networkNodeShape);
            canvas.SetLeftTop(networkNodeShape, pointText);
            networkNodeShapesList.Add(networkNodeShape);
        }
예제 #2
0
        /// <summary>
        /// 生成拓扑数据
        /// 用于拓扑排序,
        /// 加载依赖节点
        /// </summary>
        /// <returns></returns>
        public List <NodeTopological> initData()
        {
            //交易服务
            var server6 = new Node()
            {
                nodeinfo = new NodeInfo()
                {
                    num = "007", ip = "0.0.0.0", port = 10011, type = ClientType.TRADE_SERVER
                },
                linkinfo = new List <NodeInfo>()
                {
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10012, type = ClientType.TRADE_FRONT
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10013, type = ClientType.TRADE_GATEWAY
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER
                    },
                }
            };

            //交易前置
            var server5 = new Node()
            {
                nodeinfo = new NodeInfo()
                {
                    num = "006", ip = "0.0.0.0", port = 10012, type = ClientType.TRADE_FRONT
                },
                linkinfo = new List <NodeInfo>()
                {
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10011, type = ClientType.TRADE_SERVER
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10016, type = ClientType.CONFIRM_SERVER
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER
                    },
                }
            };

            //认证服务
            var server16 = new Node()
            {
                nodeinfo = new NodeInfo()
                {
                    num = "005", ip = "0.0.0.0", port = 10016, type = ClientType.CONFIRM_SERVER
                },
                linkinfo = new List <NodeInfo>()
                {
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER
                    },
                    new NodeInfo()
                    {
                        ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER
                    },
                }
            };
            //交易网关
            var server7 = new Node()
            {
                nodeinfo = new NodeInfo()
                {
                    ip = "0.0.0.0", port = 10013, type = ClientType.TRADE_GATEWAY
                }
            };
            //消息服务
            var server17 = new Node()
            {
                nodeinfo = new NodeInfo()
                {
                    ip = "0.0.0.0", port = 10014, type = ClientType.NEWS_SERVER
                }
            };
            //短信服务
            var server19 = new Node()
            {
                nodeinfo = new NodeInfo()
                {
                    ip = "0.0.0.0", port = 10015, type = ClientType.SMS_SERVER
                },
            };

            var realData = new List <Node>()
            {
                server16, server5, server7, server6, server17, server19
            };
            var toTopData = new List <NodeTopological>();

            //生成拓扑数据
            foreach (var item in realData)
            {
                var currNodeTop = new NodeTopological()
                {
                    NodeInfo = item.nodeinfo
                };
                currNodeTop.Dependencies = new List <NodeTopological>();

                if (item.linkinfo != null)
                {
                    foreach (var item2 in item.linkinfo)
                    {
                        currNodeTop.Dependencies.Add(new NodeTopological()
                        {
                            NodeInfo = item2
                        });
                    }
                }

                toTopData.Add(currNodeTop);
            }

            return(toTopData);
        }
예제 #3
0
        private void DrawEllipse(Canvas canvas, Point pointPlace, KeyValuePair <int, List <NodeTopological> > levelNode, NodeTopological currNode)
        {
            canvas.DrawEllipse(pointPlace, 20, Colors.Red, currNode);
            Point  pointText = new Point(pointPlace.X, pointPlace.Y);
            string toShow    = currNode.NodeInfo.typeDesc + ":" + currNode.NodeInfo.Key;

            var textblock = canvas.DrawTextBlock(pointText, toShow);

            if (levelNode.Key > 0)
            {
                pointText.X  = pointPlace.X + 20;
                pointText.Y -= 20;
                canvas.SetLeftTop(textblock, pointText);
            }
        }