Я новичок в венах и пытаюсь реализовать механизм, чтобы определить, был ли пакет WSM получен ранее. Я использую «psid» в качестве основной переменной для идентификации пакета — это правильно?
Будет ли этот тип кода работать? :
bool MyVeinsApp::msgReceivedBefore(int psid){
/*
This function will be used to determine if the message was received before
and should be discarded or processed further
*/
if(msg_log.find(psid) == msg_log.end()){
return false
}
else {
return true;
}
}
Здесь msg.log — это структура данных C ++, хранящая WSM на основе psid.
Только psid является идентификатором используемой вами службы (см. WaveShortMessage.msg) и, следовательно, не является уникальным среди сообщений одного и того же сервиса. Чтобы различать сообщения, вам нужен уникальный идентификатор сообщения.
Простой подход заключается в использовании Я бы который получает каждый модуль в OMNeT ++:
msg->getId()
ОБНОВИТЬ: Обратите внимание, что этот идентификатор также является уникальным среди всех сообщений с одинаковым содержанием (см. Комментарий ниже).
Других решений пока нет …