%description: Tests that an activity() module can delete itself, and execution of that module stops immediately. Simulation of other modules continue. FIXME test that messages sent to the deleted module stop the simulation with error. %file: test.ned simple Node { } simple Suicide { } network Test { submodules: node: Node; suicide: Suicide; } %file: test.cc #include using namespace omnetpp; namespace @TESTNAME@ { class Node : public cSimpleModule { public: Node() : cSimpleModule(16384) { } virtual void activity() override; }; Define_Module(Node); void Node::activity() { for (int i=0; i<5; i++) { bool exists = (getParentModule()->getSubmodule("suicide") != nullptr); EV << "t=" << simTime() << ": exists=" << exists << endl; wait(1); } } class Suicide : public cSimpleModule { public: Suicide() : cSimpleModule(32768) { }; virtual void activity() override; }; Define_Module(Suicide); void Suicide::activity() { wait(1.0); EV << "before deleteModule\n"; deleteModule(); EV << "after deleteModule\n"; wait(1.0); EV << "event after deleteModule\n"; } }; //namespace %inifile: test.ini [General] network = Test cmdenv-express-mode = false cmdenv-event-banners = false %contains: stdout t=0: exists=1 t=1: exists=1 before deleteModule t=2: exists=0 t=3: exists=0 t=4: exists=0 %not-contains: stdout after deleteModule