Peersim如何解析文件

来源:互联网 发布:斯米兰岛和普吉岛 知乎 编辑:程序博客网 时间:2024/05/16 07:25

开始接触peersim的时候,最早想知道的问题就是peersim如何读取配置文件,如何获取配置信息。

有关配置文件处理的类都在报peersim.config中,主要看Configuration和FastConfig两个类来获取配置信息。

1)configContainer将所有配置信息储存在变量config(import java.util.Properties)中;

/**

 * The properties object that stores all configuration information.

 */

private Properties config;

并封装了很多读取配置信息的方法,但是都是提供给Configration类调用,用户通过调用Configuration中的方法获取配置信息:

可根据需要获取不同类型的返回值


2)configProperites,继承了Properties,扩展了Properties的功能。

3)Configuration,获取配置信息,主要是对configContainer的方法进行了封装,使获取配置信息更方便;

注意这一个配置参数:

static final String PAR_INCLUDE = "include"; #用来配置init或者control的运行先后顺序

4)FastConfig,专门快速获取在协议中配置的linkable和transport:

private static final String PAR_LINKABLE = "linkable";

private static final String PAR_TRANSPORT = "transport";

public static int getLinkable(int pid)

public static int getTransport(int pid)

 

其实用户只需要调用Configuration中的方法来获取配置的信息,例如,

这是一个用户自定义的观测各节点数值的control类,只列出构造函数:

01   
02  public class AverageObserver implements Control { 
03   
04      private static final String PAR_ACCURACY = "accuracy"
05   
06      private static final String PAR_PROT = "protocol"
07   
08      private final String name; 
09   
10      private final double accuracy; 
11   
12      /** Protocol identifier; obtained from config property {@link #PAR_PROT}. */ 
13      private final int pid; 
14   
15      public AverageObserver(String name) { 
16          this.name = name; 
17          accuracy = Configuration.getDouble(name + "." + PAR_ACCURACY, -1); 
18          pid = Configuration.getPid(name + "." + PAR_PROT); 
19      } 

20   }
看这个实现control接口的类,接受accuracy和protocol两个参数,配置的时候应该是:

protocol.avg example.aggregation.AverageFunction

control.avgo AverageObserver

control.avgo.protocol avg           #avg就是上面第一行配置好的protocol

accuray没有配置,configuraiton就把默认值-1传给它(Configuration.getDouble(name + "." + PAR_ACCURACY, -1) 

注意:构造函数的参数name就是前缀control.avgo,想要配置参数,类的构造函数就必须有且只有一个string参数。

 

上面说的主要是peersim如何获取配置信心的过程,下面列出peersim内核中所有可能的配置信息(即非用户定义的配置参数):

network.node

network.initialCapacity

network.size

 

simulation.cycles

simulation.nodefaultcycle

 

simulation.endtime

simulation.logtime

simulation.eventqueue

原创粉丝点击