⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hgpsrouter.h

📁 在Linux下做的QuadTree的程序
💻 H
字号:
#ifndef hgpsrouter_h#define hgpsrouter_h#define MAX_RT_ENTRIES 200#define MAX_NEXTHOP 15#define HGPS_ROUTER_STARTUP_JITTER 0.1#define MAX_ADJ_GRID 30#define BROADCAST_INTEVAL 2.0#define NEIGHBOR_TIMEOUT_INTEVAL 2*BROADCAST_INTEVAL+0.1#define RADIO_PROPAGATION 250#include "hdr_hgps.h"#include "hgpsagent.h"#include "locserver.h"class LocServer;class HGPSRouterPeriodicHandler;class HGPSAgent;struct nexthop_entry {    nsaddr_t next_node;    double x;    double y;    double lastupdate_time;    int dist;    double speed;    //nsaddr_t dst;    nexthop_entry *prev;    nexthop_entry *next;    };struct route_entry{    location loc;    nsaddr_t dst;    nexthop_entry *next_hop;    double lastupdate_time;};class HGPSRouter {    public:	void start();	void sleep();	/* return the next hop to reach loc*/	nsaddr_t getNextHop(location loc, nsaddr_t prev_hop);	nsaddr_t getNextHopFromNT(nsaddr_t dst, location &hisloc);	nsaddr_t getNextHopNode(route_entry &rnt);	nsaddr_t getBestNextHopNode(route_entry &rnt);	struct nexthop_entry *getNextHopNode(nexthop_entry *&nexthop);	bool outdatedNeighbor(nexthop_entry *next_hop, double now);//	void recvRoutingUpdate(Packet *pkt);	void addUpdateEntry(location loc,nsaddr_t next_hop,double x, double y,nsaddr_t dst, int distance, double speed);	void deleteEntry(nsaddr_t dst);	void deleteEntry(nsaddr_t fromnode, nsaddr_t tonode);	/*simplified implemention of HGPS router, assume square dense networks*/	/*i keep track of what are the smallest grids I could reach, in 1 hop,	  in 2 hops */	void broadcastOneHopRT();	//called when an route update packet arrives	void recvNeighborUpdate(Packet *p);	//set a location server	void setLocServer(LocServer *s);		//send out a packet with location information in it	void sendOutPktWithLocation(Packet *&packet, double delay, bool checkNT);	void sendOutPktWithLocation(Packet *&packet, double delay, bool checkNT, bool invoke_loc_server);	//failure feedback	void xmitFailed(Packet *pkt);	HGPSRouter(HGPSAgent *a);	~HGPSRouter();	struct route_entry nt[MAX_RT_ENTRIES];    protected:	//i'm using a lousy implementation of arrays..	//change that to a hashtable maybe?	//struct route_entry twohopnt[MAX_RT_ENTRIES];	struct route_entry rt_1[MAX_ADJ_GRID];	//struct route_entry rt_2[MAX_ADJ_GRID];	//a bunch of variables	HGPSRouterPeriodicHandler *router_periodic_handler;	Event *router_periodic_event;	HGPSAgent *parent;	LocServer *locserver;        friend void HGPS_XmitFailureCallback(Packet *pkt, void *data);};class HGPSRouterPeriodicHandler : public Handler {    public:	HGPSRouterPeriodicHandler(HGPSRouter *r);	void handle(Event *e);    private:	HGPSRouter *myrouter;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -