Проверка на наличие дубликатов в вене

Я новичок в венах и пытаюсь реализовать механизм, чтобы определить, был ли пакет 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.

3

Решение

Только psid является идентификатором используемой вами службы (см. WaveShortMessage.msg) и, следовательно, не является уникальным среди сообщений одного и того же сервиса. Чтобы различать сообщения, вам нужен уникальный идентификатор сообщения.

Простой подход заключается в использовании Я бы который получает каждый модуль в OMNeT ++:

msg->getId()

ОБНОВИТЬ: Обратите внимание, что этот идентификатор также является уникальным среди всех сообщений с одинаковым содержанием (см. Комментарий ниже).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]