Как получить доступ к имени подмодуля в omnet++?

Например, я определяю модуль Sample в файле .ned следующим образом.

simple Sample
{
    parameters:
        @display(...);
    gates:
        inout InOut;
}

И затем я определяю два подмодуля следующим образом.

S1: Sample {
     @display(...);
}
S2: Sample {
     @display(...);
}

в файле .cc я определяю класс Sample следующим образом.

class Sample: public cSimpleModule
{
  protected:
    virtual void handleMessage(cMessage *msg) override;
};

Теперь, как я могу получить доступ к имени подмодуля в функции handleMessage?

Например, мне нужен следующий код.

void Sample::handleMessage(cMessage *msg)
{
    if(strcmp("S1", this->getSubModuleName()) == 0){
        ...
    }
}

person Alina    schedule 07.04.2020    source источник


Ответы (1)


Чтобы получить имя текущего объекта (т.е. модуля, подмодуля) используйте getName(). Однако, чтобы проверить, равно ли имя заданной строке, можно использовать удобный метод isName(), например:

if (isName("S1")) {
    // name is "S1"
}

Ссылка: API OMNeT++

person Jerzy D.    schedule 07.04.2020