从 Tictoc13 开始,难度加大。
首先派生 cMessage 子类 TicTocMsg13:
message TicTocMsg13
{
int source; //源地址
int destination; //目的地址
int hopCount = 0; //跳数
}
编译(build project)会自动生成 tictoc13_m.h 和tictoc13_m.cc 文件。
TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);
这是将消息类型强制转换为 TicTocMsg13 *。
为了方便理解,把目的地址输出:
TicTocMsg13 *Txc13::generateMessage()
{
// Produce source and destination addresses.
int src = getIndex(); // our module index
int n = getVectorSize(); // module vector size
int dest = intuniform(0, n-2);
EV << dest << "\n"; // add by myself
if (dest >= src)
dest++;
char msgname[20];
sprintf(msgname, "tic-%d-to-%d", src, dest);
把跳数输出:
void Txc13::forwardMessage(TicTocMsg13 *msg)
{
// Increment hop count.
msg->setHopCount(msg->getHopCount()+1);
EV << msg->getHopCount() << "\n"; // add by myself
初始化结果如下:目的地址是 4,但是目的地址大于源地址,所以目的地址 4+1=5。
输出跳数:
第一次传输从源地址 tic[0] 到目的地址 tic[5] 一共经历了 17 跳。
第二次传输从源地址 tic[5] 到目的地址 tic[0] 一共经历了 11 跳。
第三次传输从源地址 tic[0] 到目的地址 tic[3] 一共经历了 45 跳。
……