Omnet++ 如何在接收器中获取serviceTime?

Omnet++ 如何在接收器中获取serviceTime?,omnet++,Omnet++,在处理消息时,我需要在Sink中使用serviceTime on simulation。我怎样才能找回它?我尝试了不同的方法,但没有成功。例如,要以与服务器组件检索值相同的方式进行恢复,但我遇到错误: 水槽 Sink.cc void Sink::handleMessage(cMessage *msg) { jobServiced = check_and_cast<Job *>(msg); simtime_t serviceTime = par("serviceTime"); 我得到

在处理消息时,我需要在Sink中使用serviceTime on simulation。我怎样才能找回它?我尝试了不同的方法,但没有成功。例如,要以与服务器组件检索值相同的方式进行恢复,但我遇到错误: 水槽

Sink.cc

void Sink::handleMessage(cMessage *msg)
{
jobServiced = check_and_cast<Job *>(msg);
simtime_t serviceTime = par("serviceTime");
我得到:

Service Time      Service Rate   
0.50                 1.99
0.43                 2.29
0.25                 3.99
0.11                 8.49
0.10                 9.38
0.05                 17.815
0.13                 7.403
0.003                30.485
在运行中,我得到一个错误,无法将1.0336e+007转换为simtime\u t:超出比例指数-12允许的范围(-922337203685477)

多谢各位


看看Sink.cc:

void Sink::handleMessage(cMessage *msg)
{
    Job *job = check_and_cast<Job *>(msg);

    // gather statistics
    emit(lifeTimeSignal, simTime()- job->getCreationTime());
    emit(totalQueueingTimeSignal, job->getTotalQueueingTime());
    emit(queuesVisitedSignal, job->getQueueCount());
    emit(totalServiceTimeSignal, job->getTotalServiceTime());
    emit(totalDelayTimeSignal, job->getTotalDelayTime());
    emit(delaysVisitedSignal, job->getDelayCount());
    emit(generationSignal, job->getGeneration());

    if (!keepJobs)
        delete msg;
}

谢谢你,鲁迪,我已经在omnet.ini中定义了:*.serviceTime=exponential(0.4s)。totalServiceTimeSignal恢复的平均值约为0.4。但是,当收集totalServiceTime值并除以作业数时,我得到的结果并不相同。运行结束时出现以下错误:“simtime\u t:超出刻度指数-12允许的范围。我是否必须添加或删除某些内容才能按作业获取服务时间?关于什么是总服务时间,这里存在一些误解。totalServiceTime统计在作业在网络中移动并到达不同服务器时累积服务时间。即,每个作业都有其SEPARTE totalServiceTime变量,该值包含作业发送到网络中任何服务器的总时间。将总服务时间除以作业数是完全没有意义的。请不要这样做。StackOverflow是一个问答网站。这不是一个自由讨论问题的论坛。你已经从根本上改变了你原来的问题,并给它添加了一个全新的问题。这样的问题不可能有正确答案,提供的(正确)答案将无效。这对未来的读者来说是完全无用的。如果答案解决了你的问题,接受它,把你的新问题形成一个单独的问题。对不起,我的错。
Service Time      Service Rate   
0.50                 1.99
0.43                 2.29
0.25                 3.99
0.11                 8.49
0.10                 9.38
0.05                 17.815
0.13                 7.403
0.003                30.485
void Sink::handleMessage(cMessage *msg)
{
    Job *job = check_and_cast<Job *>(msg);

    // gather statistics
    emit(lifeTimeSignal, simTime()- job->getCreationTime());
    emit(totalQueueingTimeSignal, job->getTotalQueueingTime());
    emit(queuesVisitedSignal, job->getQueueCount());
    emit(totalServiceTimeSignal, job->getTotalServiceTime());
    emit(totalDelayTimeSignal, job->getTotalDelayTime());
    emit(delaysVisitedSignal, job->getDelayCount());
    emit(generationSignal, job->getGeneration());

    if (!keepJobs)
        delete msg;
}
job->getTotalServiceTime()