%description: Tests deletion of a handleMessage() simple module which has scheduled events. %file: test.ned simple NodeA { } simple Deleter { } network Test { submodules: nodeA: NodeA; deleter: Deleter; } %file: test.cc #include using namespace omnetpp; namespace @TESTNAME@ { class NodeA : public cSimpleModule { public: cMessage *msg; virtual void initialize() override; virtual void handleMessage(cMessage *msg) override; }; Define_Module(NodeA); void NodeA::initialize() { cMessage *msg = new cMessage("timeout"); scheduleAt(0, msg); } void NodeA::handleMessage(cMessage *msg) { EV << "NodeA " << getFullPath() << " at t=" << simTime() << endl; scheduleAt(simTime()+1, msg); } class Deleter : public cSimpleModule { public: Deleter() : cSimpleModule(16384) { } virtual void activity() override; }; Define_Module(Deleter); void Deleter::activity() { wait(3); EV << "Deleting nodeA at t=" << simTime() << endl; cModule *nodeA = getParentModule()->getSubmodule("nodeA"); nodeA->deleteModule(); EV << "Deleted" << endl; wait(2); EV << "Still here at t=" << simTime() << endl; } }; //namespace %inifile: test.ini [General] network = Test cmdenv-express-mode = false cmdenv-event-banners = false %contains: stdout NodeA Test.nodeA at t=0 NodeA Test.nodeA at t=1 NodeA Test.nodeA at t=2 Deleting nodeA at t=3 Deleted Still here at t=5