⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 triangularmatrixparser.java

📁 peersim最新版1.0.4
💻 JAVA
字号:
/* * Copyright (c) 2003-2005 The BISON Project * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */package peersim.transport;import java.io.*;import peersim.config.*;import peersim.core.*;/** * Initializes static singleton {@link E2ENetwork} by reading a trace  * file containing the latency distance measured between a set of  * "virtual" routers. Latency is assumed to be symmetric, so the  * latency between x and y is equal to the latency to y and x. *  * The format of the file is as follows: all values are stored as * integers. The first value is the number of nodes considered. * The rest of the values correspond to a "strictly upper triangular  * matrix" (see this  * <a href="http://en.wikipedia.org/w/index.php?title=Triangular_matrix&oldid=82411128"> * link</a>), ordered first by row than by column. *  * @author Alberto Montresor * @version $Revision: 1.4 $ */public class TriangularMatrixParser implements Control{// ---------------------------------------------------------------------// Parameters// ---------------------------------------------------------------------/** * This configuration parameter identifies the filename of the file * containing the measurements. First, the file is used as a pathname  * in the local file system. If no file can be identified in this way,  * the file is searched in the local classpath. If the file cannot be  * identified again, an error message is reported. * @config */private static final String PAR_FILE = "file";/** * The ratio between the time units used in the configuration file and the * time units used in the Peersim simulator. * @config */private static final String PAR_RATIO = "ratio";// ---------------------------------------------------------------------// Fields// ---------------------------------------------------------------------/** Name of the file containing the measurements. */private String filename;/** Ratio read from PAR_RATIO */private double ratio;// ---------------------------------------------------------------------// Initialization// ---------------------------------------------------------------------/** * Read the configuration parameters. */public TriangularMatrixParser(String prefix){	filename = Configuration.getString(prefix + "." + PAR_FILE);	ratio = Configuration.getDouble(prefix + "." + PAR_RATIO);}// ---------------------------------------------------------------------// Methods// ---------------------------------------------------------------------/** * Initializes static singleton {@link E2ENetwork} by reading a king data set.* @return  always false*/public boolean execute(){	try {		ObjectInputStream in = null;		try {			in = new ObjectInputStream(					new BufferedInputStream(							new FileInputStream(filename)));			System.err.println("TriangularMatrixParser: Reading " + filename + " from local file system");		} catch (FileNotFoundException e) {			in = new ObjectInputStream(					new BufferedInputStream(							ClassLoader.getSystemResourceAsStream(filename)));			System.err.println("TriangularMatrixParser: Reading " + filename + " through the class loader");		}			// Read the number of nodes in the file (first four bytes).	  int size = in.readInt();	  		// Reset the E2E network		E2ENetwork.reset(size, true);		System.err.println("TriangularMatrixParser: reading " + size + " rows");			// If the file format is not correct, data will be read 		// incorrectly. Probably a good way to spot this is the 		// presence of negative delays, or an end of file.			// Reading data		int count = 0;		for (int r=0; r < size; r++) {			for (int c = r+1; c < size; c++) {				int x = (int) (ratio*in.readInt());				count++;				E2ENetwork.setLatency(r,c,x);			}		}		System.err.println("TriangularMatrixParser: Read " + count + " entries");	} catch (IOException e) {		throw new RuntimeException(e.getMessage());	}	return false;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -