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

📄 application.cpp

📁 topdisc算法的omnet仿真.平台:omnet+vc 6.0
💻 CPP
字号:
//-------------------------------------------------------------------//  file name: application.cpp// //    - contains the implementation of application class////-------------------------------------------------------------------#include "application.h"// some constant definitions// message definitions
#define SEND_BLACK_REQ_NEW		{							\
	cMessage *msg = new cMessage("BlackRequest");			\
	msg->setKind(M_HIGHLOW);								\
	msg->addPar("senderPX")=this->parentModule()->par("PX");\
	msg->addPar("senderPY")=this->parentModule()->par("PY");\
	msg->addPar("senderId")=ID;								\
	send(msg,"lowergate_out");								\
}

#define SEND_DARKGREY_REQ_NEW   {							\
	cMessage *msg = new cMessage("DarkGreyRequest");		\
	msg->addPar("senderPX")=this->parentModule()->par("PX");\
	msg->addPar("senderPY")=this->parentModule()->par("PY");\
	msg->setKind(M_HIGHLOW);								\
	msg->addPar("senderId")=ID;								\
	send(msg,"lowergate_out");								\
}  


#define SEND_GREY_REQ_NEW		{							\
	cMessage *msg = new cMessage("GreyRequest");			\
	msg->addPar("senderPX")=this->parentModule()->par("PX");\
	msg->addPar("senderPY")=this->parentModule()->par("PY");\
	msg->setKind(M_HIGHLOW);								\
	msg->addPar("senderId")=ID;								\
	send(msg,"lowergate_out");								\
} void application::initialize(){	isreq=-1;
	if (ID==0)		// node 0 starts the algorithm	{
		isreq=1;
		parentModule()->par("TYPE")=1;
		SEND_BLACK_REQ_NEW;
	}}void application::finish(){}void application::handleMessage(cMessage *msg){
	switch(msg->kind())	{	case M_LOWHIGH:		{			if(strcmp(msg->name(),"BlackRequest")==0)
			{
				processBlackRequest(msg);
				break;				
			}

			if(strcmp(msg->name(),"GreyRequest")==0)
			{
				processGreyRequest(msg);
				break;
			}

			if(strcmp(msg->name(),"DarkGreyRequest")==0)
			{
				processDarkGreyRequest(msg);
				break;
			}
			ev << "unknown message received from another node.\n";			endSimulation();		}	case M_SELF:		{						if (strcmp(msg->name(),"StartUp")==0)			{				SEND_BLACK_REQ_NEW;				delete msg;				break;			}			ev << "unknown self message received\n";			endSimulation();		}	default:		ev << "unknown message received\n";		endSimulation();	}}
void application::processBlackRequest(cMessage *msg)
{
	isreq=parentModule()->par("TYPE");
    if(isreq==1||isreq==0)
	{
		delete msg;
		return;
	}

	else if (isreq==-1)
	{
		UPDATECOLOR(3);
		isreq=0;
		parentModule()->par("TYPE")=0;

		time=msg->par("timeout");
		SEND_GREY_REQ_NEW;
		delete msg;
	}
}


void application::processGreyRequest(cMessage *msg)
{
	isreq=parentModule()->par("TYPE");
    if(isreq==1||isreq==0||isreq==2)
	{
		delete msg;
		return;
	}

	else if (isreq==-1)
	{
		UPDATECOLOR(5);
		isreq=2;
		parentModule()->par("TYPE")=2;

		SEND_DARKGREY_REQ_NEW;
		delete msg;
	}
}

void application::processDarkGreyRequest(cMessage *msg)
{
	isreq=parentModule()->par("TYPE");
	if(isreq==-1)
	{
		int a=parentModule()->par("ANOTHER");                            
		if(a==1)
		{
			UPDATECOLOR(3);
			isreq=0;
			parentModule()->par("TYPE")=0;
			SEND_GREY_REQ_NEW;
			delete msg;
		}
		else 
		{
			UPDATECOLOR(7);
			isreq=1;
			parentModule()->par("TYPE")=1;
			SEND_BLACK_REQ_NEW;
			delete msg;
		}

	}

	else 
	{
		delete msg;
		return ;
	}
}

⌨️ 快捷键说明

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