ONE源代码分析——router1之MessageRouter

所有路由协议的超类,是一个抽象类。

MessageRouter类:

数据域:

static final String B_SIZE_S = “bufferSize”:每个节点消息缓存大小

static final String MSG_TTL_S = “msgTtl”:消息的生存周期

static final String SND_QUEUE_MODE_S = "sendQueue":发送队列模式,两种——先入先出和随机

static final int RCV_OK = 0,TRY_LATER_BUSY = 1,DENIED_OLD = -1,DENIED_NO_SPACE = -2,DENIED_TTL = -3,DENIED_LOW_RESOURSES = -4,DENIED_POLICY = -5,DENIED_UNSPECIFIED = -99: (0)表示节点接收message并且转发开始,小于0的值表示接收节点并没有接收该信息;大于0的值表示目前不能接收该信息

List<MessageListener> mListeners

HashMap<String, Message> incomingMessages:正在等待转发的消息

HashMap<String, Message> messages:承载的所有消息

HashMap<String, Message> deliveredMessages:该节点作为消息终点接收到的消息

HashMap<String, Object> blacklistedMessage

DTNHost host:本路由所属的节点

int bufferSize:本节点缓存大小

int msgTtl:对于所有消息的TTL

int sendQueueMode:发送队列模式

HashMap<String, Collection<Application>> applications:节点参与的应用


函数域:

构造函数MessageRouter(Settings s)由设置文件创建MessageRouter对象。默认缓存大小是Integer.MAX_VALUE,默认TTL是UNFINITE_TTL,如果配置文件对缓存大小和ttl有设置,则按配置修改,并确认发送队列模式。


void init(DTNHost host, List<MessageListener> mListeners)对于该路由进行初始化。


void update()函数用于仿真时间间隔中更新application。


abstract void changedConnection(Connection con)通知路由连接状态改变。


boolean isDeliveredMessage(Message m)如果该节点作为消息终点接收到参数message,返回true。


void sendMessage(String id, DTNHost to)开始发送message给另一个节点。


int receiveMessage(Message m, DTNHost from)开始接收从另一节点发送过来的message。将接收到信息添加到incomingBuffer中,将本地节点加入到message的路径表中,然后,message监视器得到接受信息。


Message messageTransferred(String id, DTNHost from)当一个message成功被转发,该函数由消息接收端发起。先将转发的message从incoming列表中取出,然后设置接收时间戳;将message交给application(如果有的话),application接收一个输入message,处理后返回一个输出message,如果输出message 被app重新定义了目的地,那么本message将不会算作“转发给了”本节点。判定该message是否到达最终目的,判定是否是第一次被转发(本地节点是最终目的,并且之前没有被转发过)。如果不是最终目的,而且app不想扔掉该message,则将其加入缓存,存入messages表;否则,如果是第一次转发节点,将其添加到deliveredMessages表中;否则,如果没有输出,将其加入黑名单,表示不再接受该message。


void deleteMessage(String id, boolean drop)从缓存中删除message。drop表示,如果这个message被丢弃(比如缓存已满)设为true,如果message由于到达目的被remove则设为false。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ymaym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值