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

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

?? asyncmaclayer.cc

?? 基于omnet++開發的Mf框架下的802.11協議仿真。
?? CC
?? 第 1 頁 / 共 2 頁
字號:
    			ackTap=2;
    			if (backupVector.size()>0)
    		{   
    			resendCounter = 0;
    			timeOutA();
    		}
    		}
    		else 
    		{
    			ackTap-=1;
    			startPop();  	
    		} 
  		  		   	    		    					    		    	
    	} 	
    	else
       	error("receive acitve event when node is already ACTIVE .....");       	    	
    }  	
    //*******************************
    //* when receving self pop event*
    //*******************************
    else if(msg==popEvent)
    {   
    	if(status==IS_ACTIVE)
    		startPop();
    	
    }
    else if(msg==timeOut)
    {
        if(status==IS_ACTIVE)
        	timeOutA();	
    }
    else if(msg==energe)
    	{ 
			if(x_energe.size()!=0)
			{ for(std::deque<std::string >::iterator iter = x_energe.begin();iter != x_energe.end();++iter)
			 {
			 		
			 		if(mysql_query(&mysql_mac,(*iter).c_str())!=0)
			 		{
			 			std::cout<<"execute insert syntax fail"<<
								std::endl<<mysql_error(&mysql_mac)<<endl;
						mysql_close(&mysql_mac);
						return;
			 		}
			 		
			 }
			
			 x_energe.clear();
			}
			 scheduleAt(simTime()+5.0, energe);
    		}
    		
    //**********************************
    //* when receving self sleep event *
    //**********************************
    else if (msg==sleepEvent)
    {        	
    	ev << logName() << "::AsyncMacLayer: node-" << findHost()->index() << " receiving--self-- " << msg << endl;   	    
        if(status==IS_ACTIVE)
        {
        	status=IS_SLEEP;
        	scheduleAt(simTime()+sleepTime,activeEvent);         	 			
	        if(popEvent->isScheduled())
	        {
	        	ev << logName() << "::AsyncMacLayer: cancel scheduled popEvent"<<endl;
	        	cancelEvent(popEvent);
	        }
	        if(timeOut->isScheduled())
	        {
	        	ev << logName() << "::AsyncMacLayer: cancel scheduled timeOut"<<endl;
	        	cancelEvent(timeOut);
	        }
	        // we begin to SLEEP. 
	        sleepTimestamp=simTime();	       
	                   
        }
        else
        	error("receive SLEEP event when node is already SLEEP .....");       
    }         
}




/**
 * Redefine this function if you want to process messages from upper
 * layers before they are send to lower layers.
 *
 * To forward the message to lower layers after processing it please
 * use @ref sendDown. It will take care of anything needed
 **/
void AsyncMacLayer::handleUpperMsg(MacPkt *mac)
{	 
	
	if (queue.length()<(int)par("frameCapacity"))
	{           
		ev<<logName()<<"::handleUpperMsg:: The ACKDestAddr is: "<<tempAddr<<endl;
       	        mac->setAckDestAddr(tempAddr);
       	
	   	queue.insert(mac);
	   	
	   	ev<<logName()<<"AsyncMacLayer::handleUpperMsg"<<" The queue length is(queue.length()) "<<queue.length()<<endl;
	   	
		
		if(findHost()->index()!=(int)findHost()->submodule("appl")->par("destAddress"))
    		
    	        ev<<logName()<<"AsyncMacLayer::handleUpperMsg"<<"The queue length is(backupVector.size())"<<backupVector.size()<<endl;
	}
	else
	{
		if(findHost()->index()!=(int)findHost()->submodule("appl")->par("destAddress"))
			//if number of the packets in queue go beyond the frameCapacity, set the node's color red 
    		findHost()->displayString().setTagArg("i",1, "red"); 
		ev << logName() << "::AsyncMacLayer: insert upper msg--to mac address "<<mac->getDestAddr()<<endl;
		delete mac;
	}
		
}




/**
 * Here is the place to implement a real medium access functionality.
 *
 * This basic implementation just forwards all message that ae
 * broadcast (destAddr = -1) or destined for this node (destAddr = nic
 * module id())
 *
 * Redefine this function if you want to process messages from lower
 * layers before they are forwarded to upper layers
 *
 * If you want to forward the message to upper layers please use
 * @ref sendUp which will take care of decapsulation and thelike
 **/
void AsyncMacLayer::handleLowerMsg(MacPkt *mac)
{	
		
		energyConsumption += rxEnergy*(mac->length())/(double)par("bitrate");  
  	if( mac->getDestAddr() == myMacAddr())//the packet is for me
  	{  	
    	sendUp(mac);
    	
    }
    
    else if((mac->getAckDestAddr()==myMacAddr()))// deal with ACK!!!!!!!!!!!
    {    	
        ev << logName() << "::AsyncMacLayer:: node-" << findHost()->index() << " currently queue length is:(backupVector.size()):: " << backupVector.size() << endl;
          		
  		  tempIterator = backupVector.begin();
        while( tempIterator != backupVector.end() ) {
    		if(mac->timestamp()==(*tempIterator)->timestamp())
    		{
    		//	delete *tempIterator;
    			backupVector.erase(tempIterator);          	
    			ev<<logName()<<"::handleLowerMsg:: The Pkt received is ACK from "<<getSenderName(mac)<<endl;
    			ev << logName() << "::AsyncMacLayer:: node-" << findHost()->index() << " currently queue length is:(backupVector.size()):: " << backupVector.size() << endl;
          if(mac->getDestAddr()==-1)
          {            		
              ev<<logName()<<"::handleLowerMsg:: The Pkt received is ACK from sink!!";
          }
          break;	    	    		
    		}
    		tempIterator++;
  		}       
       
        delete mac;    
    } 
  	else{
    	ev << logName() << "::AsyncMacLayer: message from "<<getSenderName(mac)<<" with mac addr "<<mac->getSrcAddr()<<" not for me (dest="<<mac->getDestAddr()<<") -> delete (my MAC="<<myMacAddr()<<")\n";    
    	delete mac;
  	}
}
        



void AsyncMacLayer::finish()
{
	BasicMacLayer::finish();	
	//CFile::Write(energyConsumption+'\n');
	FILE   *fp;   
  fp   =   fopen("c:\\asyncEnergy.txt","a");   
  fprintf(fp,   "%f\r\n",  energyConsumption);   
  fclose(fp);
  ev << logName() << "::AsyncMacLayer: Total energy consumed: " << energyConsumption <<"(mW)" <<endl;	
  //ev<<logName()<<"::AsyncMacLayer:have "<<tempCount.size()<<" adjust nodes"<<endl;
}




/**
 *  
 * resend the buffered msg in vector at the next wakeup time...
 * 
 **/
void AsyncMacLayer::timeOutA()
{ 
	if(status==IS_ACTIVE)
    {  
    	ev<<logName()<<"::AsyncMacLayer:: Begin to retry sending the pkt/ACK(sink) "<<endl;
    
    	if (resendCounter<(backupVector.size()/2))//???為什么小于一半
    	{	
    		
    		tempIterator = backupVector.begin();
    		for(int i=0; i<resendCounter; i++ )
    		{
     			tempIterator++;
   			}
   			
			//我認為這里resendCounter應該為backupVector.size()
			ev<<logName()<<"In the backupVector,still have "<<resendCounter<<" Pkts are waiting for being resent"<<endl;
			
			int counter=(*tempIterator)->getRetryLimit();	
			ev<<logName()<<"::The Pkt's re-send-counter is "<<counter<<endl;		
    		if(counter<(int)par("retryLimit"))
    		{    			
    			MacPkt *msg=(MacPkt* )(*tempIterator)->dup();
    			ev<<logName()<<"Make a copy and begin to resending"<<endl;    			
    			(*tempIterator)->setRetryLimit(counter+1);
    			energyConsumption += txEnergy*(msg->length())/(double)par("bitrate");
    			scheduleAt(simTime()+msg->length()/(double)par("bitrate")+0.001, timeOut);
    			sendDown((MacPkt*)msg);
    			resendCounter+=1;
    		}
    		//達到重發次數上限    		else
    		{
    			backupVector.erase(tempIterator);
    			ev<<logName()<<"::AsyncMacLayer:: reach max rtLimit!!! pkt deleted "<<endl;	
    			scheduleAt(simTime(), timeOut);
    		}	   		    		
    		
		}
    	else 
    	{   	
			scheduleAt(simTime(), popEvent);				
   		}	
 	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频你懂得一区二区三区| 在线观看91精品国产麻豆| 91电影在线观看| 精品国产乱码久久久久久老虎| 国产精品理论在线观看| 久热成人在线视频| 欧美三区在线观看| 欧美韩国日本综合| 久久99精品久久久久久| 欧美视频一区二区三区四区| 中文在线免费一区三区高中清不卡| 亚洲国产精品一区二区www| 国产麻豆一精品一av一免费| 欧美性猛片aaaaaaa做受| 中国色在线观看另类| 久久精品噜噜噜成人av农村| 欧美怡红院视频| 亚洲国产高清在线| 国产在线视频精品一区| 91精品午夜视频| 一二三四区精品视频| 成人免费不卡视频| 久久久五月婷婷| 青青草97国产精品免费观看 | 欧美一区二区三区视频免费| 亚洲欧洲综合另类| 成人免费看片app下载| 久久亚洲一区二区三区明星换脸 | 亚洲一区二区美女| av综合在线播放| 欧美国产精品专区| 国内外成人在线| 亚洲精品在线观| 狠狠狠色丁香婷婷综合激情| 日韩免费高清av| 极品瑜伽女神91| 日韩精品一区在线| 日本不卡在线视频| 欧美久久久久免费| 秋霞国产午夜精品免费视频| 欧美日韩你懂的| 日韩电影在线免费看| 91麻豆精品国产综合久久久久久 | 日韩电影在线观看网站| 欧美日韩中文国产| 日韩影院精彩在线| 日韩一区二区精品在线观看| 美洲天堂一区二卡三卡四卡视频| 5月丁香婷婷综合| 精品无码三级在线观看视频 | 欧美日韩三级视频| 日本伊人色综合网| 欧美v日韩v国产v| 国产不卡一区视频| 中文字幕一区二区三区在线观看| 99国产精品99久久久久久| 亚洲欧美视频一区| 欧美网站一区二区| 裸体健美xxxx欧美裸体表演| 亚洲精品一区二区三区蜜桃下载| 国产裸体歌舞团一区二区| 国产三级一区二区| 色又黄又爽网站www久久| 亚洲成人av电影在线| 日韩欧美卡一卡二| www.爱久久.com| 亚洲成人免费影院| 久久久不卡影院| 成人v精品蜜桃久久一区| 亚洲午夜在线观看视频在线| 91精品国产品国语在线不卡| 国产精品77777竹菊影视小说| 亚洲三级免费电影| 制服丝袜av成人在线看| 国产·精品毛片| 亚洲综合图片区| 精品国产乱码久久| 色综合夜色一区| 另类小说欧美激情| 亚洲黄色录像片| 欧美成人精品3d动漫h| 99久久精品免费看国产| 美女诱惑一区二区| 一区二区三区四区不卡视频| 精品福利一二区| 在线一区二区视频| 国产精品99精品久久免费| 婷婷中文字幕综合| 中文字幕一区二区三区在线不卡| 欧美精品久久天天躁| 成人99免费视频| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲大型综合色站| 亚洲三级视频在线观看| 久久久久久久久久久久电影| 欧美喷水一区二区| 色香蕉久久蜜桃| 成人午夜碰碰视频| 国产一区二区三区日韩| 亚洲国产精品一区二区尤物区| 中文乱码免费一区二区| 精品日韩成人av| 欧美一区二区视频在线观看2020| 91精品1区2区| 99热99精品| 久久疯狂做爰流白浆xx| 五月婷婷色综合| 亚洲精选一二三| 国产精品久久综合| 国产欧美日韩另类视频免费观看| 欧美绝品在线观看成人午夜影视| 在线亚洲人成电影网站色www| 成人午夜伦理影院| 国产99久久久久久免费看农村| 精品一区二区在线视频| 男女男精品视频网| 国产婷婷色一区二区三区四区| 日韩精品一区二区三区蜜臀 | 成人激情图片网| 国产91高潮流白浆在线麻豆 | 精品国产免费一区二区三区四区| 欧美影院午夜播放| 欧美日韩一级视频| 欧美日本一区二区三区四区| 欧美天天综合网| 欧美另类高清zo欧美| 88在线观看91蜜桃国自产| 欧美日韩日日夜夜| 91麻豆精品国产自产在线观看一区 | 精品人在线二区三区| 欧美成人精品福利| 久久一区二区视频| 国产精品欧美综合在线| 国产精品理论在线观看| 国产精品美女久久久久高潮| 国产精品久久看| 亚洲激情在线激情| 亚洲大片精品永久免费| 青青草97国产精品免费观看 | 国产精品91xxx| av在线不卡免费看| 91同城在线观看| 欧美老肥妇做.爰bbww视频| 欧美一区二区三区白人| 精品乱人伦小说| 国产精品电影院| 亚洲国产一区二区三区青草影视 | 91精品国产福利| 久久日韩精品一区二区五区| 国产女人18毛片水真多成人如厕| 国产精品视频麻豆| 亚洲国产综合色| 久久66热偷产精品| 成人精品国产福利| 欧美日韩国产另类不卡| 精品日韩一区二区三区| 亚洲欧美一区二区久久| 日韩电影在线观看一区| 成人激情午夜影院| 欧美日韩成人在线一区| 欧美国产禁国产网站cc| 亚洲国产精品久久不卡毛片| 国产高清在线观看免费不卡| 日本高清成人免费播放| 欧美精品一区二区三区久久久| 亚洲视频一二三| 久久99精品久久久久久动态图| 99v久久综合狠狠综合久久| 日韩免费高清av| 一区二区三区欧美日韩| 国产不卡一区视频| 欧美乱妇15p| 亚洲日本成人在线观看| 久久精品国产久精国产爱| 91国偷自产一区二区开放时间 | 国产精品美日韩| 久久精品噜噜噜成人av农村| 91福利在线免费观看| 国产欧美一区二区精品性色超碰| 五月综合激情网| 91美女片黄在线| 国产精品无码永久免费888| 免费成人结看片| 欧美日韩一区三区| 亚洲免费在线观看视频| 国产成人在线观看| 欧美一区二区三区影视| 亚洲综合一二区| 色88888久久久久久影院按摩| 国产欧美一区二区精品秋霞影院| 日本aⅴ免费视频一区二区三区| 在线区一区二视频| 国产精品福利av| 成人国产在线观看| 久久品道一品道久久精品| 久草中文综合在线| 日韩天堂在线观看| 日韩黄色免费网站| 欧美精品 日韩| 日韩综合小视频|