Я пытаюсь рассчитать коэффициент доставки сообщений с помощью TraCIDemo.
В sendBeacon
Я увеличиваю messageDeliverySend
каждый раз, когда я отправляю сообщение и в processBeacon
Я увеличиваю messageDeliveryReceive
параметр на основе отправляющего узла.
В processBeacon
Я сравниваю строки с node[0]
, но я хочу проверить этот параметр динамически. Как мне сделать часть динамической проверки для этого кода?
Мой сценарий будет, если есть несколько узлов, передающих в node[1]
например, я хочу записывать значения только из node[0]
,
void ROAMER::sendBeacon(ROAMERBeacon * beacon, double delay) {
ROAMER_EV << "Sending beacon: address = " << beacon->getAddress()
<< ", position = " << beacon->getPosition() << endl;
IPv4ControlInfo * networkProtocolControlInfo = new IPv4ControlInfo();
networkProtocolControlInfo->setProtocol(IP_PROT_MANET);
networkProtocolControlInfo->setTimeToLive(255);
networkProtocolControlInfo->setDestAddr(IPv4Address::LL_MANET_ROUTERS);
networkProtocolControlInfo->setSrcAddr(getSelfAddress().get4());
messageDeliverySend++;
delayTime = simTime();
UDPPacket * udpPacket = new UDPPacket(beacon->getName());
udpPacket->encapsulate(beacon);
udpPacket->setSourcePort(ROAMER_UDP_PORT);
udpPacket->setDestinationPort(ROAMER_UDP_PORT);
udpPacket->setControlInfo(networkProtocolControlInfo);
sendUDPPacket(udpPacket, delay);
}
void ROAMER::processBeacon(ROAMERBeacon * beacon) {
if(strcmp(beacon->getSenderAddress(),"node[0]") == 0){
messageDeliveryReceive++;
}
}
void ROAMER::finish(){
messageDeliveryRatio = messageDeliveryReceive/messageDeliverySend;
recordScalar("Message Delivery Ratio",messageDeliveryVecRatio);
}
Задача ещё не решена.
Других решений пока нет …