%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: {}.ned simple {Node} endsimple simple {Suicide} endsimple module {Net} submodules: node: {Node}; suicide: {Suicide}; endmodule network {network} : {Net}; endnetwork %file: {}.cc #include class {Node} : public cSimpleModule { Module_Class_Members({Node},cSimpleModule,16384) virtual void activity(); }; Define_Module({Node}); void {Node}::activity() { for (int i=0; i<5; i++) { bool exists = (parentModule()->submodule("suicide") != NULL); ev << "t=" << simTime() << ": exists=" << exists << endl; wait(1); } } class {Suicide} : public cSimpleModule { Module_Class_Members({Suicide},cSimpleModule,32768); virtual void activity(); }; 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"; } %inifile: {}.ini [General] network={network} [Cmdenv] event-banners=no %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