нужна ваша помощь.
У меня есть три модуля Модуль A, Модуль B и Модуль C.
Модуль A отправляет 20 сообщений модулю B. Я хочу отправить один пакет модулю C после получения всех 20 сообщений от модуля A. Как я могу справиться с этой ситуацией на handleMessage?
В данный момент он работает как петля. при каждом прибытии отправка сообщения. мне нужно собрать все сообщения из предыдущего модуля, собрать из них данные, подготовить одно сообщение и отправить одно сообщение следующему модулю.
=============================================== ==
ваше первое решение работает отлично. Я только борюсь со вторым решением. поэтому, пожалуйста, помогите мне в этом. Пожалуйста, проверьте код ниже и дайте мне знать, где я не прав.
class ModuleB: public cSimpleModule
{
protected:
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
private:
bool sentMessage = false;
simtime_t lastMessageReceivedAt;
simtime_t timer;
};
void ModuleB::initialize()
{
}
void ModuleB::handleMessage(cMessage *msg)
{
if(simTime() - lastMessageReceivedAt >= timer && sentMessage == false)
{
EV << counter << " messages to receive before sending.\n";
// Data collection
}
else
{
lastMessageReceivedAt = simTime();
EV << " Send message to Module C.\n";
cMessage *newMsg = new cMessage("Message")
send(newMsg, "out");
sentMessage = true;
}
}