1
该文件定义gpsr实现所使用的每个节点的邻居列表
- 邻居列表中的每一项代表一个邻居节点,每个邻居节点有唯一的id,更新其地理位置信息((x,y)坐标),并记录其最近一次收到“hello”消息的时间。
- 邻居列表中记录有该列表所属节点id、地理位置信息以及该表中所含有节点的个数。
private中提供了列表更新的方法:在已知节点id的条件下可以对其对应表项进行查看和删除操作、及时清除超时表项、彻底释放当前邻居列表,此外还有三种方法在下面注释下做了标记,暂时不能理解其具体实现意义,等其他文件读到时再进行理解。
public中则提供了更新当前节点位置信息、添加表项、计算两节点距离以及根据表项节点与目的节点的距离来选择下一跳的方法。
struct gpsr_neighbor {
//邻居
nsaddr_t id_; //唯一标识
double x_; //地理位置信息((x,y)坐标)
double y_;
double ts_; //该节点hello消息的最后一个time stamp(时间戳)
struct gpsr_neighbor *next_;
struct gpsr_neighbor *prev_;
};
class GPSRNeighbors {
//网络中每个节点的邻居列表
private:
//the neighbors list
struct gpsr_neighbor *head_;
struct gpsr_neighbor *tail