#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);