Сбор данных по одной и той же статистике между модулями в OMNeT

#simulation #omnet

#Симуляция #omnet

Вопрос:

Я использую OMNeT в качестве механизма моделирования для моделирования произвольной топологии сети. Я создал разные пользовательские модули OMNeT для имитации разных объектов в моей симуляции. Я также использую OMNeT signals и statistics для сбора результатов.

Мне интересно, могу ли я собирать данные, исходящие из разных модулей, с отдельными сигналами, но для сбора, обработки и записи в выходной файл с помощью одной и той же статистики?

Я знаю, что, вероятно, мог бы обойтись простой регистрацией и использованием отдельной статистики для каждого модуля, но поскольку в документации указано, что результирующий сбор и запись происходят на более высоком уровне в иерархии наследования OMNeT и, следовательно, в разных экземплярах модуля, я думаю, что это должно быть возможно.

Ответ №1:

Оказывается, я могу получить желаемый результат, извлекая ссылку на экземпляр модуля, который создал statistic и signal и выдает нужное мне значение, даже при обработке события в другом модуле.

Соответствующий фрагмент кода ниже:

 auto ref = (ModuleClass *)getParentModule()->getSubmodule("ModuleName");
if (ref == NULL)
{
    //check successful instance retrieval
}

ref->emit(ref->relaventSignal, ValueToEmit);