Exemplo n.º 1
0
        private void initialize(NetworkTopology networkTopology)
        {
            if (networkTopology.Nodes.Count == 0)
            {
                throw new Exception("Initilaize() Fail: There are 0 nodes in the network.");
            }

            numberOfTTracer = Convert.ToInt32(Math.Round(percentageOfTunnelingTracer * networkTopology.Nodes.Count / 100, 0, MidpointRounding.AwayFromZero));
            numberOfMTracer = Convert.ToInt32(Math.Round(percentageOfMarkingTracer * networkTopology.Nodes.Count / 100, 0, MidpointRounding.AwayFromZero));
            numberOfFTracer = Convert.ToInt32(Math.Round(percentageOfFilteringTracer * networkTopology.Nodes.Count / 100, 0, MidpointRounding.AwayFromZero));

            // Clear the deployment method.
            foreach (NetworkTopology.Node node in networkTopology.Nodes)
            {
                node.Tracer = NetworkTopology.TracerType.None;
            }

            jobID = DateTime.Now.Subtract(new DateTime(1970, 1, 1)).Ticks;
            isNeedWriteing2SQLite = true;
            isNeedReset           = true;

            allRoundScopeList.Clear();
            deployNodes.Clear();

            sqlite_utility.insertNetworkTopology(networkTopology);
        }
Exemplo n.º 2
0
            public void insertNetworkTopology(NetworkTopology topo)
            {
                string cmd = "INSERT INTO NetworkTopology(file_name, node_counts, edge_counts, diameter) VALUES(@file_name, @node_counts, @edge_counts, @diameter)";
                List <SQLiteParameter> parms = new List <SQLiteParameter>();

                parms.Add(new SQLiteParameter("@file_name", topo.FileName));
                parms.Add(new SQLiteParameter("@node_counts", topo.Nodes.Count));
                parms.Add(new SQLiteParameter("@edge_counts", topo.Edges.Count));
                parms.Add(new SQLiteParameter("@diameter", topo.Diameter));

                RunCommnad(cmd, parms);
            }
Exemplo n.º 3
0
        public void Deploy(NetworkTopology networkTopology)
        {
            initialize(networkTopology);

            doDeploy(networkTopology);

            if (isNeedWriteing2SQLite)
            {
                write2SQLite(networkTopology);
            }

            if (isNeedReset)
            {
                networkTopology.Reset();
            }
        }
        /// <summary>
        /// Operator overloading(-, minus) that define the complement set between the two network topologies.
        /// </summary>
        /// <param name="left_n">The minuend of the network topology.</param>
        /// <param name="right_n">The subtrahend of the network topology.</param>
        /// <returns>The complement set between the two network topologies.</returns>
        public static NetworkTopology operator -(NetworkTopology left_n, NetworkTopology right_n)
        {
            NetworkTopology result = new NetworkTopology(left_n.m_src_nodes);

            result.m_diameter = left_n.Diameter;
            result.Nodes      = left_n.Nodes.Except(right_n.Nodes).ToList();
            result.Edges      = left_n.Edges.Except(right_n.Edges).ToList();
            foreach (var n in right_n.Nodes)
            {
                result.Edges.RemoveAll(e => e.Node1 == n.ID || e.Node2 == n.ID);
            }

            result.AdjacentMatrix = left_n.AdjacentMatrix;

            return(result);
        }
        public double ClusteringCoefficient(NetworkTopology Scope, int NodeID)
        {
            List <int>  neighbor = GetNeighborNodeIDs(NodeID);
            List <Edge> neighbor_edge_connect_set = new List <Edge>();

            neighbor_edge_connect_set.AddRange(Edges.Where(e =>
                                                           Scope.Nodes[0].ID == e.Node1 && neighbor.Contains(e.Node2) ||
                                                           Scope.Nodes[0].ID == e.Node2 && neighbor.Contains(e.Node1)
                                                           ));

            double max_edges           = (neighbor.Count * (neighbor.Count - 1)) / 2;
            double neighbor_edge_count = neighbor_edge_connect_set.Count;

            if (max_edges > 0)
            {
                return(neighbor_edge_count / max_edges);
            }
            else
            {
                return(0);
            }
        }
Exemplo n.º 6
0
        public PrecomputingForm()
        {
            InitializeComponent();

            BackgroundWorker worker = new BackgroundWorker();

            worker.WorkerSupportsCancellation = true;
            worker.WorkerReportsProgress      = true;

            m_now_index = 0;

            worker.DoWork += (s, e) =>
            {
                ListViewItem item = e.Argument as ListViewItem;

                if (item == null)
                {
                    e.Cancel = true;
                    worker.CancelAsync();
                }
                else
                {
                    worker.ReportProgress(m_now_index);

                    NetworkTopology topo = new NetworkTopology(10, 10);
                    topo.ReadBriteFile(item.SubItems[0].Text);
                }
            };

            worker.RunWorkerCompleted += (s, e) =>
            {
                if (!e.Cancelled)
                {
                    getItem().SubItems[1].Text = "Completed.";
                    m_now_index++;
                    progress_bar.Value = (int)((float)m_now_index / (float)lv_status.Items.Count * 100);
                    worker.RunWorkerAsync(getItem());
                }
                else
                {
                    btn_computing.Enabled  = true;
                    tb_select_file.Enabled = true;
                }
            };

            worker.ProgressChanged += (s, e) =>
            {
                getItem().SubItems[1].Text = "Computing...";
            };

            tb_select_file.Click += (s, e) =>
            {
                openFileDialog1.Multiselect      = true;
                openFileDialog1.InitialDirectory = Environment.CurrentDirectory;
                openFileDialog1.Filter           = "Birte File|*.brite";
                openFileDialog1.Title            = "Select Brite Files";
                openFileDialog1.FileName         = "";

                if (openFileDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                {
                    lv_status.BeginUpdate();

                    tb_select_file.Text = "";
                    lv_status.Items.Clear();

                    foreach (string file in openFileDialog1.FileNames)
                    {
                        tb_select_file.Text += file + ";";

                        ListViewItem lvi = new ListViewItem(new string[] { file, "Queued..." });
                        lv_status.Items.Add(lvi);
                    }

                    lv_status.EndUpdate();
                }
            };

            btn_computing.Click += (s, e) =>
            {
                m_now_index = 0;
                worker.RunWorkerAsync(getItem());
                btn_computing.Enabled  = false;
                tb_select_file.Enabled = false;
            };
        }
Exemplo n.º 7
0
 protected abstract void write2SQLite(NetworkTopology networkTopology);
Exemplo n.º 8
0
 protected abstract void doDeploy(NetworkTopology networkTopology);