📄 application.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 + -