📄 networkreader.java
字号:
flag = str.nextToken(); // get the optional entry if (flag.equalsIgnoreCase("true") == true) { log = true; } } // create a specific Router object if (rate == true) { router = new RateControlledRouter(name, log); } else { router = new RIPRouter(name, log); } routerList.add(router); // add the router into the list } return routerList; } /** * Creates a network topology from a given buffered reader * @param buf a Buffered Reader object * @return a list of Router objects or <tt>null</tt> if an error occurs */ private static LinkedList createNetworkFIFO(BufferedReader buf) throws Exception { if (buf == null) { return null; } // create the Router objects first LinkedList routerList = createRouter(buf, false); int GB = 1000000000; // 1 GB in bits String line; String name1, name2; StringTokenizer str = null; Router r1, r2; Link tempLink = null; // creating the linking between two routers while ((line = buf.readLine()) != null) { str = new StringTokenizer(line); if (str.hasMoreTokens() == false) { // ignore newlines continue; } // parse the name of the connected routers name1 = str.nextToken(); // router name if (name1.startsWith("#") == true) { // ignore comments continue; } name2 = str.nextToken(); // router name r1 = getRouter(name1, routerList); r2 = getRouter(name2, routerList); if (r1 == null || r2 == null) { System.out.println("NetworkReader.createNetworkFIFO(): " + "Warning - unable to connect both "+name1+" and "+name2); continue; } // get baud rate of the link String baud = str.nextToken(); // bandwidth (Gbps) String propDelay = str.nextToken(); // latency (in millisec) String mtu = str.nextToken(); // link MTU (in byte) tempLink = new SimpleLink(r1.get_name() + "_" + r2.get_name(), Double.parseDouble(baud) * GB, Double.parseDouble(propDelay), Integer.parseInt(mtu)); FIFOScheduler r1Sched = new FIFOScheduler(r1.get_name() + "_to_" + r2.get_name()); FIFOScheduler r2Sched = new FIFOScheduler(r2.get_name() + "_to_" + r1.get_name()); r1.attachRouter(r2, tempLink, r1Sched, r2Sched); } return routerList; } /** * Creates a network topology from a given buffered reader * @param buf a Buffered Reader object * @param weight a linear array of the weights to be assigned to * different classes of traffic. * @return a list of Router objects or <tt>null</tt> if an error occurs */ private static LinkedList createNetworkSCFQ(BufferedReader buf, double[] weight) throws Exception { if (buf == null) { return null; } // create the Router objects first LinkedList routerList = createRouter(buf, false); int GB = 1000000000; // 1 GB in bits String line; String name1, name2; StringTokenizer str = null; Router r1, r2; Link tempLink = null; // creating the linking between two routers while ((line = buf.readLine()) != null) { str = new StringTokenizer(line); if (str.hasMoreTokens() == false) { // ignore newlines continue; } // parse the name of the connected routers name1 = str.nextToken(); // router name if (name1.startsWith("#") == true) { // ignore comments continue; } name2 = str.nextToken(); // router name r1 = getRouter(name1, routerList); r2 = getRouter(name2, routerList); if (r1 == null || r2 == null) { System.out.println("NetworkReader.createNetworkSCFQ(): " + "Warning - unable to connect both "+name1+" and "+name2); continue; } // get baud rate of the link String baud = str.nextToken(); // bandwidth (Gbps) String propDelay = str.nextToken(); // latency (in millisec) String mtu = str.nextToken(); // link MTU (in byte) tempLink = new SimpleLink(r1.get_name() + "_" + r2.get_name(), Double.parseDouble(baud) * GB, Double.parseDouble(propDelay), Integer.parseInt(mtu)); SCFQScheduler r1Sched = new SCFQScheduler(r1.get_name() + "_to_" + r2.get_name()); SCFQScheduler r2Sched = new SCFQScheduler(r2.get_name() + "_to_" + r1.get_name()); r1Sched.setWeights(weight); r2Sched.setWeights(weight); r1.attachRouter(r2, tempLink, r1Sched, r2Sched); } return routerList; } /** * Creates a network topology from a given buffered reader * @param buf a Buffered Reader object * @param numClass the number of classes * @param percentage a linear array of bandwidth percentage to be assigned * to different classes of traffic. * @return a list of Router objects or <tt>null</tt> if an error occurs */ private static LinkedList createNetworkRate(BufferedReader buf, int numClass, double[] percentage) throws Exception { if (buf == null) { return null; } // create the Router objects first LinkedList routerList = createRouter(buf, true); int GB = 1000000000; // 1 GB in bits String line; String name1, name2; StringTokenizer str = null; Router r1, r2; Link tempLink = null; // creating the linking between two routers while ((line = buf.readLine()) != null) { str = new StringTokenizer(line); if (str.hasMoreTokens() == false) { // ignore newlines continue; } // parse the name of the connected routers name1 = str.nextToken(); // router name if (name1.startsWith("#") == true) { // ignore comments continue; } name2 = str.nextToken(); // router name r1 = getRouter(name1, routerList); r2 = getRouter(name2, routerList); if (r1 == null || r2 == null) { System.out.println("NetworkReader.createNetworkRate(): " + "Warning - unable to connect both "+name1+" and "+name2); continue; } // get baud rate of the link String baud = str.nextToken(); // bandwidth (Gbps) String propDelay = str.nextToken(); // latency (in millisec) String mtu = str.nextToken(); // link MTU (in byte) double baud_rate = Double.parseDouble(baud) * GB; tempLink = new SimpleLink(r1.get_name() + "_" + r2.get_name(), baud_rate, Double.parseDouble(propDelay), Integer.parseInt(mtu)); RateControlledScheduler r1Sched = new RateControlledScheduler( r1.get_name() + "_to_" + r2.get_name(), numClass); RateControlledScheduler r2Sched = new RateControlledScheduler( r2.get_name() + "_to_" + r1.get_name(), numClass); // calculates the exact rate based on the given percentage double[] rate = new double[numClass]; for (int k = 0; k < numClass; k++) { double value = baud_rate * percentage[k] / 100; rate[k] = value; } r1Sched.setRates(rate); r2Sched.setRates(rate); r1.attachRouter(r2, tempLink, r1Sched, r2Sched); } return routerList; }} // end class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -