1 applications
包含模拟器的核心类和接口
1.1 PingApplication:
这是一个简单的ping应用,这个应用被设置为发送ping命令并接收,发送消息回应。其中,引用report包中的PingAppReport来记录该应用的表现。
Ping_Passive(被动模式,不发送ping只接收并回应)
Ping_Interval(Ping产生的时间间隔)
Ping_Offset(Ping间隔偏差,为了防止同时发送ping)
Ping_Dest_Range(终点地址的范围)
Ping_Seed(这个app的随机种子)
Ping_Ping_Size(ping的消息大小)
Pong_Pong_Size(pong的消息大小)
App_ID
handle(Message msg, DTNHost host):处理消息,如果这个消息是ping,那么就回应一个pong的消息。它生成ping和pong的消息,msg(收到的消息),host(应用程序实例需要的主机)
randomHost():从目标范围随机画主机
update(DTNHost host):如果是活动的应用程序实例则发送ping包
2 core
2.1 Application
applications的基础类,每一个拥有应用运行的节点会在消息处理前通过application中的handle()方法发送给应用。每一次模拟的循环中applications的update方法都会被调用
需要对application进行设置,挑选一个特殊的application实例名字并且设置它的type属性:
mySimpleApp.type = SimpleApplication
这些application可以分配给节点组通过:
Group1.application =mySimpleApp
-
handle(Message msg, DTNHost host) 当拥有这个application的Node节点收到消息时,就还是利用这个方法处理信息,并返回一系列消息,传播。
-
update() 每个循环进行更新
-
setAppID(String appID) 设置application ID,在创建application时设置,不推荐在模拟时更改。
-
setAppListeners (List aListeners)
-
sendEventToListeners(String event, Object params,DTNHost host)
2.2 ApplicationListener
想要接受消息的report class 都应该实现这个接口,需要知道是哪个application
2.3 ArithmeticCondition
算术包
-
ArithmeticCondition(String cond)
创建算术环境,必须有 大于符号 小于符号 等于符号 中的一个和一个双精度浮点数。
-
isTrueFor(double value) 查看是否满足“值 运算符 数字”的形式
2.4 CBRConnection
两个DTN节点之间的固定比特率连接
-
CBRConnection(DTNHost fromNode, NetworkInterface fromInterface,DTNHost toNode, NetworkInterface toInterface, int connectionSpeed) 在节点中建立新的连接
-
startTransfer(DTNHost from, Message m) 设置消息这个连接正在传送,如果连接被其他事件控制则不需要
-
abortTransfer() 退出transfer的状态
-
getTransferDoneTime()
-
isMessageTransferred()
-
getSpeed() 返回连接目前速度
-
getRemainingByteCount() 返回被传输的字节数量
2.5 Connection
两个DTN节点中的一个连接
-
Connection(DTNHost fromNode, NetworkInterface fromInterface, DTNHost toNode, NetworkInterface toInterface) 创建新的连接
-
isInitiator(DTNHost node) 判断给出节点是否是这个连接的创始者
-
startTransfer(DTNHost from, Message m) 同 CBRConnection 中的startTransfer
-
clearMsgOnFly() 清除正在传输的消息
-
finalizeTransfer() 结束传送,正在传送的消息无法被接收到
其余方法可自行参考源码
2.6 ConnectionListener
想要接收消息的节点的接口
-
hostsConnected(DTNHost host1, DTNHost host2) 连接两个DTN host
-
hostsDisconnected(DTNHost host1, DTNHost host2)
2.7 Constants
全局常量
2.8 Coord
二维坐标类,进行简单的运算和转换
2.9 Debug
打印调试信息和时间戳
2.10 DTN2Manager
管理外部聚集层连接到DTND,解析配置文件并设置CLAParsers和EID->主机映射
-
DTN2Reporter 解析从one到dtnd的消息的reporter
-
DTN2Events 解析从dtnd到one的消息的事件
-
EID到DTNHost映射元素
public static class EIDHost { public String EID; public int host_id; public DTNHost host; public EIDHost(String eid, int host_id, DTNHost host) { this.EID = eid; this.host = host; this.host_id = host_id; } } -
setup(World world) 通过解析在 DTN2.configFile 中定义的配置文件设置dtnd连接
-
setReporter(DTN2Reporter reporter) 设置DTN2Reporter,用来从one到dtnd传递消息
其余还有设置事件、解析器等方法
2.11 DTNHost
DTN host的一些方法
-
getNextAddress() 返回一个新的网络接口地址并且为了后续调用增加地址
-
isMovementActive() 判断节点是否移动
-
setRouter(MessageRouter router) 为host设置路由
-
getComBus() 返回这个host的模块通信bus
-
move(double timeIncrement) 移动节点在路径上,如果没有则等待
-
setNextWaypoint() 设置下一个目标点和和速度
还有一些其他关于消息的方法
2.12 DTNSim
模拟器的主要类
-
main(String[] args)
ATCH_MODE_FLAG:batch mode 和 text UI启动,batch mode 必须有runs的数量
RANGE_DELIMETER
setRunIndex(int) 需要设置文件
-
registerForReset(String className) 注册一个要重置的类,在每一批次运行模拟器后重置类的状态到初始状态
2.13 Message
消息(在节点创建时建立或被传输在两个节点之间)
2.14 MessageListener
消息监听类的接口
2.15 ModuleCommunication
Intermodule communication bus. 可以发送数据,订阅数据变化,轮询数据值等,类似于message class中的属性接口,但这里的值被节点共享
2.16 ModuleCommunicationListener
在ModuleCommunicationBuses监听变量值
2.17 MovementListener
节点移动信息接口类
2.18 NetworkInterface
DTNHost的网络接口,检测hosts的连接性
2.19 Settings
模拟器设置接口,存储在setting文件夹中,在init之前必须将这个类初始化,如果未初始化仅有 DEF_SETTINGS_FILE被读取。
2.20 SettingError
2.21 SimClock
时钟,检查模拟时间
2.22 SimError
2.23 SimScenario
一个被用于获取和存储一次模拟运行的设置
2.24 UpdateListener
监听更新
2.25 VBRConnetction
两个DTN节点之间的联系,发送速度每一轮更新一次。
2.26 World
World 包含了所有的节点并负责更新它们的位置和联系。
3 input
NROF_SETTING 要加载的事件队列总数是用变量定义的
Events.nrof = 3
使用语法配置单独的事件队列
EventsN.variable = value
Events1.filePath = ee/messages.txt
Events2.class = RandomMessageGenerator
外部事件文件被使用当变量 PATH_SETTING被使用来定义事件文件路径并且事件生成器类被CLASS_SETTING定义且加载