[仿真平台]ONE仿真器中关于ConnectivityGrid的运行机制

07 Jan 2019

今天写一个仿真程序,用到了两种不同类型的节点,但是发现配备不同种类interface的节点,相互之间无法建立connection,经过测试发现是ConnectivityGrid的维护机制问题。
首先,虽然每个节点的NetworkInterface中,都各自维护了一个ConnectivityGrid,但是其初始化是依靠setHost()当中调用ConnectivityGridFactory函数来添加各个节点的。
再仔细去看ConnectivityGridFactory,会发现其实这是一个静态函数,其中有一个gridobjects的HashMap,并以interface种类的hashcode作为key来寻址,因此到这里十分明显,只有同类型的interface才能够进行通信,
(例如Node1配备Interface1和Interface2,而Node2只配备Interface1和Interface3,则Interface1相互之间可通信,Interface2和4则相互之间无法通信) 配备其的节点才会被加入到对应的grid当中,从而在每次NetworkInterface进行update时,才有机会判断是否在通信范围内,并建立connection。

相关推荐网站