亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bcast_queue.cc

?? code that can compile NS-2.27 on Fedora Core 4
?? CC
字號:
/******************************************************************* Copyright (C) 2004 Thomas Kunz, CRC Canada, BCAST for IPv4. DISTRIBUTED WITH NO WARRANTY, EXPRESS OR IMPLIED. See the GNU Library General Public License (file COPYING in the MANET_multicast directory) for conditions of use and redistribution.*********************************************************************//* * Functions to manage pending broadcast messages. These are saved in  * an ordered list, with timeouts set to schedule the first packet in the * list. * * This queue structure is necessarily to implement the Scalable Broadcast * Algorithm described in "Comparison of Broadcasting Techniques for * Mobile Ad Hoc Networks" by Williams and Camp, MobiHoc 2002. */#include <random.h>#include <bcast/bcast.h>#include <bcast/bcast_packet.h> // #define DEBUG#define CURRENT_TIME    Scheduler::instance().clock() voidBCASTHandler::handle(Event*) {  if (pbcasts.lh_first) {	struct hdr_bcast *bh = HDR_BCAST(pbcasts.lh_first->p);	PendingBCAST *elem = pbcasts.lh_first;	if (elem->no_of_neighbors == 0) {		// no more neighbors left to cover, drop from list#ifdef DEBUG		fprintf(stderr, "Node %d: Pending BCAST cancelled\n",			agent->index);#endif	} else {		// transmit pending broadcast#ifdef DEBUG		fprintf(stderr,"Node %d: Send pending broadcast %f at %f\n", 			agent->index, pbcasts.lh_first->expire, CURRENT_TIME);#endif		agent->sendPacket(pbcasts.lh_first->p, 0.0);	}	LIST_REMOVE(elem, link);	delete elem;	no_bcasts--;	// schedule for next event in list	if (pbcasts.lh_first != NULL) {#ifdef DEBUG		fprintf(stderr, "Node %d: Schedule for %f at %f\n", 			agent->index, pbcasts.lh_first->expire, CURRENT_TIME);#endif		Scheduler::instance().schedule(this, &intr, 			pbcasts.lh_first->expire - CURRENT_TIME);	} }}/*   Unique ID Management  Functions*/voidBCASTHandler::insert(Packet *p, int no_of_neighbors, nsaddr_t neighbors[],		double delay) {PendingBCAST *b; PendingBCAST *list = pbcasts.lh_first;int inserted = 0; // Check whether queue is too full already if (no_bcasts >= MAX_QUEUE_LEN) {	// pass packet on for delivery right away#ifdef DEBUG	fprintf(stderr, "Node %d: BCAST queue full\n", agent->index);#endif	agent->sendPacket(p, 0.0);	return; } // We have to iterate through the list to see if earlier packets // from the same node are enqueued. If so, adjust the DELAY to ensure // in-order delivery. struct hdr_ip *ih = HDR_IP(p); struct hdr_rtp *rh = HDR_RTP(p); struct hdr_bcast *bh = HDR_BCAST(p); nsaddr_t src = ih->saddr(); unsigned int seqno = rh->seqno_; for (list = pbcasts.lh_first; list; list = list->link.le_next) {   // extract source and sequence number for enqueue packet   struct hdr_ip *ih_q = HDR_IP(list->p);   struct hdr_rtp *rh_q = HDR_RTP(list->p);   nsaddr_t src_q = ih_q->saddr();   unsigned int seqno_q = rh_q->seqno_;   if (src == src_q && seqno > seqno_q) {     // we found a packet from the same source with an earlier sequence number     if (delay < list->expire) {       // that earlier packet is scheduled for later transmission: adjust       // delay for the current packet       delay = list->expire + 0.02 * Random::uniform(); #ifdef DEBUG       fprintf(stderr, "Node %d: adjusting queuing delay for packet (%d,%d)\n",          agent->index, src, seqno);       fprintf(stderr, "         due to earlier packet (%d,%d) in queue\n",          src_q, seqno_q);#endif     }   } } // Check whether new element belongs at head of list#ifdef DEBUG fprintf(stderr,"Node %d: Adding packet %lx with delay %f at time %f\n",	agent->index, p, delay, CURRENT_TIME);#endif// agent->sendPacket(p, 0.0); b = new PendingBCAST(p, delay);// copy info about remaining uncovered neighborhood b->no_of_neighbors = no_of_neighbors; for (int i = 0; i < b->no_of_neighbors; i++) {	 b->neighbors[i] = neighbors[i]; } list = pbcasts.lh_first; if (list == NULL || delay < list->expire) {	LIST_INSERT_HEAD(&pbcasts, b, link);	// check if we need to cancel an already scheduled (later) event for	// this queue before scheduling for the new earliest event...	if (intr.uid_) {#ifdef DEBUG		fprintf(stderr, "Node %d: Reschedule earliest event\n",			agent->index);#endif		Scheduler::instance().cancel(&intr);	}	Scheduler::instance().schedule(this, &intr, 		pbcasts.lh_first->expire - CURRENT_TIME);	 } else {	// search in list for right place	for (; list->link.le_next; list = list->link.le_next) {		if (list->link.le_next && delay < list->link.le_next->expire) {			LIST_INSERT_AFTER(list, b, link);			inserted = 1;			break;		}	}	if (!inserted) {		// add at list end		LIST_INSERT_AFTER(list, b, link);	} } no_bcasts++;}voidBCASTHandler::process(nsaddr_t src, int unique_id, 	int count, nsaddr_t neighbors[]) {PendingBCAST *b = pbcasts.lh_first;// return;#ifdef DEBUG  fprintf(stderr, "Node %d: Process packet (%d,%d) at %f\n", agent->index, 	src, unique_id, CURRENT_TIME);#endif // Search the list for a match of source and bid for( ; b; b = b->link.le_next) {	struct hdr_cmn *ch = HDR_CMN(b->p);	struct hdr_ip *ih = HDR_IP(b->p);	struct hdr_bcast *bh = HDR_BCAST(b->p);#ifdef DEBUG	fprintf(stderr,"Node %d: Check against packet (%d,%d)\n", agent->index,		ih->saddr(), ch->uid());#endif 	if (ih->saddr()==src && ch->uid()==unique_id) {		compare(b, count, neighbors);	} }}/* =======================================================================   Private Routines   ======================================================================= */void BCASTHandler::compare(PendingBCAST *b, int count, 	nsaddr_t neighbors[]) {// struct hdr_bcast *bh = HDR_BCAST(p);#ifdef DEBUG fprintf(stderr, "Node %d: Compare pending neighbors with new information\n",	agent->index); fprintf(stderr, "Pending neighbors:"); for (int j = 0; j < b->no_of_neighbors; j++) {	fprintf(stderr, " %d", b->neighbors[j]); } fprintf(stderr, "\nNew neighbors:"); for (int i = 0; i < count; i++) {	fprintf(stderr, " %d", neighbors[i]); } fprintf(stderr, "\n");#endif for (int i = 0; i < count; i++) {	for (int j = 0; j < b->no_of_neighbors; j++) {		if (b->neighbors[j] == neighbors[i]) {			for (int l = j+1; l < b->no_of_neighbors; l++) {				b->neighbors[l-1] = b->neighbors[l];			}			b->no_of_neighbors = b->no_of_neighbors - 1;			break;		}	} }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品欧美综合在线观看最新| 日本电影欧美片| 精品理论电影在线| 久久99国内精品| 久久久美女毛片| 国产成a人无v码亚洲福利| 日本一区二区成人在线| 成a人片国产精品| 亚洲日本在线a| 91麻豆精品国产自产在线观看一区 | 亚洲一线二线三线久久久| 91黄视频在线观看| 三级影片在线观看欧美日韩一区二区| 日韩亚洲欧美综合| 成人一区二区视频| 亚洲制服丝袜一区| 精品精品欲导航| av在线不卡电影| 亚洲国产乱码最新视频| 精品久久久久久久久久久久久久久久久| 国产一区二区在线看| 成人免费在线视频观看| 在线成人免费视频| 成人一区二区三区在线观看| 亚洲一区二区在线观看视频| 日韩欧美国产综合在线一区二区三区| 国产精品2024| 亚洲成年人影院| 国产精品色呦呦| 日韩一区二区免费在线观看| 风间由美性色一区二区三区| 午夜久久福利影院| 中文字幕综合网| 欧美mv日韩mv亚洲| 91官网在线观看| 成人做爰69片免费看网站| 婷婷久久综合九色综合伊人色| 久久久久9999亚洲精品| 欧美午夜理伦三级在线观看| 国产成人午夜视频| 久久精品国产秦先生| 亚洲免费观看高清完整版在线观看 | 高清视频一区二区| 日韩成人精品在线观看| 日本一区二区三区四区| 日韩午夜精品视频| 欧美日韩大陆在线| 91在线视频播放| 国产成人精品免费网站| 日韩av电影天堂| 亚洲乱码一区二区三区在线观看| 欧美mv和日韩mv的网站| 欧美在线影院一区二区| 成人精品一区二区三区四区| 久久99国产乱子伦精品免费| 五月婷婷另类国产| 亚洲一区二区三区三| 成人欧美一区二区三区白人| 国产亚洲成aⅴ人片在线观看| 日韩一区二区麻豆国产| 精品视频一区二区不卡| 在线看一区二区| 91浏览器入口在线观看| 成人免费看视频| 成人午夜私人影院| 国产91精品一区二区麻豆亚洲| 麻豆精品新av中文字幕| 免费成人性网站| 美女在线视频一区| 久久99蜜桃精品| 美女视频一区二区三区| 日本美女一区二区三区视频| 亚洲国产精品嫩草影院| 亚洲午夜激情网站| 午夜精品爽啪视频| 日欧美一区二区| 日韩二区三区四区| 久久成人免费网站| 国产精品一区二区久久精品爱涩| 国产主播一区二区三区| 国产传媒一区在线| www.成人网.com| 99久久国产免费看| 91黄色在线观看| 欧美高清视频一二三区 | 成年人网站91| 99精品视频在线观看免费| 99久久久国产精品| 色婷婷av一区| 911精品国产一区二区在线| 欧美一区二区三区四区在线观看 | 综合久久国产九一剧情麻豆| 亚洲日本电影在线| 香蕉成人伊视频在线观看| 日本不卡在线视频| 国产精品一区二区不卡| a在线欧美一区| 欧美伊人精品成人久久综合97| 欧美三级韩国三级日本三斤| 日韩精品自拍偷拍| 中文字幕在线播放不卡一区| 一区二区三区欧美亚洲| 日韩和欧美一区二区| 国产一区二区三区四区五区入口| 粉嫩嫩av羞羞动漫久久久| 在线一区二区观看| 精品日产卡一卡二卡麻豆| 欧美激情在线一区二区| 亚洲综合无码一区二区| 精品在线播放免费| 色综合久久六月婷婷中文字幕| 欧美日韩一区二区三区在线看| 欧美成人一区二区三区在线观看| 久久久国产综合精品女国产盗摄| 亚洲色图一区二区| 精品无人码麻豆乱码1区2区| zzijzzij亚洲日本少妇熟睡| 欧美日韩一本到| 精品国产一区二区三区忘忧草| 亚洲欧美一区二区久久| 久久99热99| 欧美丝袜丝交足nylons图片| 久久美女高清视频| 偷拍一区二区三区| www.在线欧美| 中文字幕一区在线观看| 日本不卡一二三区黄网| 国产999精品久久久久久 | 欧美日韩中文另类| 欧美激情在线看| 免费在线观看不卡| 在线观看日韩精品| 国产精品午夜在线| 久热成人在线视频| 欧美性大战久久久久久久蜜臀| 国产亚洲欧美一级| 男人操女人的视频在线观看欧美 | 亚洲精品成人悠悠色影视| 国产综合色在线| 欧美夫妻性生活| 亚洲日本韩国一区| 成人黄色片在线观看| 精品乱人伦小说| 日韩和欧美一区二区| 日本伦理一区二区| 亚洲欧洲成人精品av97| 国产老女人精品毛片久久| 在线播放中文一区| 亚洲国产成人av网| 在线观看一区日韩| 中文字幕一区三区| 不卡一区二区在线| 国产精品你懂的在线欣赏| 精品一区精品二区高清| 欧美一级日韩免费不卡| 亚洲国产精品麻豆| 在线免费视频一区二区| 亚洲精品乱码久久久久久| 波多野洁衣一区| 国产农村妇女毛片精品久久麻豆| 久久66热偷产精品| 精品国产一区a| 国产在线播放一区| 久久奇米777| 东方aⅴ免费观看久久av| 久久亚洲二区三区| 国产麻豆午夜三级精品| 精品久久人人做人人爽| 精品综合久久久久久8888| 欧美成人vr18sexvr| 日韩av电影一区| 欧美不卡一二三| 国产一区欧美二区| 久久综合资源网| 国产成人av电影在线观看| 日本一区二区免费在线观看视频 | 精品国产青草久久久久福利| 免费在线观看成人| 精品sm捆绑视频| 成人小视频免费观看| 中文字幕中文字幕在线一区| 91在线免费看| 亚洲bt欧美bt精品| 精品裸体舞一区二区三区| 国产精品一线二线三线| 中文字幕高清一区| 色吧成人激情小说| 婷婷综合五月天| 日韩一区二区三免费高清| 国产乱子伦一区二区三区国色天香| 久久亚洲精品国产精品紫薇| 成人久久久精品乱码一区二区三区 | 99精品欧美一区二区蜜桃免费 | 欧美日韩高清在线| 黄色小说综合网站| 中文字幕一区二区三区蜜月| 欧美色国产精品| 国产精品一区二区不卡| 亚洲另类中文字| 欧美草草影院在线视频|