%description: Test model change notifications by creating and deleting a compound module %file: test.ned module Node { parameters: @display("i=block/rxtx"); int x; gates: inout g[]; connections allowunconnected: } module TwoNodes { types: channel Ch extends ned.DatarateChannel { parameters: datarate = 100Mbps; delay = 0.1s; } submodules: node1: Node { x = 1; @display("p=100,100"); } node2: Node { x = 2; @display("p=200,100"); } connections: node1.g++ <--> Ch {ber=1e-9;} <--> node2.g++; } simple Tester { } network Test { submodules: tester: Tester; } %file: test.cc #include using namespace omnetpp; #include "../lib/noisylistener.h" using namespace testlib; namespace @TESTNAME@ { class Tester : public cSimpleModule, public NoisyListener { public: Tester() : cSimpleModule(16384) { } virtual void activity() override; }; Define_Module(Tester); void Tester::activity() { cModuleType *type = cModuleType::find("TwoNodes"); cModule *root = getSimulation()->getSystemModule(); root->subscribe(PRE_MODEL_CHANGE, this); root->subscribe(POST_MODEL_CHANGE, this); EV << "\nCREATING:\n"; cModule *node = type->createScheduleInit("twoNodes", root); EV << "\nDELETING:\n"; node->deleteModule(); EV << "\nDONE\n"; } }; //namespace %inifile: test.ini [General] network = Test cmdenv-express-mode = false cmdenv-event-banners = false %subst: /omnetpp::// %contains: stdout SUBSCRIBED at module "Test", signal "PRE_MODEL_CHANGE" SUBSCRIBED at module "Test", signal "POST_MODEL_CHANGE" CREATING: SIGNAL from module "Test", signal "PRE_MODEL_CHANGE", class cPreModuleAddNotification, info: SIGNAL from module "Test.twoNodes", signal "POST_MODEL_CHANGE", class cPostModuleAddNotification, info: SIGNAL from module "Test.twoNodes", signal "PRE_MODEL_CHANGE", class cPreModuleAddNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPreGateAddNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostGateAddNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostModuleAddNotification, info: SIGNAL from module "Test.twoNodes", signal "PRE_MODEL_CHANGE", class cPreModuleAddNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPreGateAddNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostGateAddNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostModuleAddNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPreGateVectorResizeNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostGateVectorResizeNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPreGateVectorResizeNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostGateVectorResizeNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPreGateConnectNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPrePathCreateNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPrePathCreateNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostGateConnectNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostPathCreateNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostPathCreateNotification, info: SIGNAL from channel "Test.twoNodes.node1.g$o[0].channel", signal "PRE_MODEL_CHANGE", class cPreParameterChangeNotification, info: SIGNAL from channel "Test.twoNodes.node1.g$o[0].channel", signal "POST_MODEL_CHANGE", class cPostParameterChangeNotification, info: SIGNAL from channel "Test.twoNodes.node1.g$o[0].channel", signal "PRE_MODEL_CHANGE", class cPreParameterChangeNotification, info: SIGNAL from channel "Test.twoNodes.node1.g$o[0].channel", signal "POST_MODEL_CHANGE", class cPostParameterChangeNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPreGateConnectNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPrePathCreateNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPrePathCreateNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostGateConnectNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostPathCreateNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostPathCreateNotification, info: SIGNAL from channel "Test.twoNodes.node2.g$o[0].channel", signal "PRE_MODEL_CHANGE", class cPreParameterChangeNotification, info: SIGNAL from channel "Test.twoNodes.node2.g$o[0].channel", signal "POST_MODEL_CHANGE", class cPostParameterChangeNotification, info: SIGNAL from channel "Test.twoNodes.node2.g$o[0].channel", signal "PRE_MODEL_CHANGE", class cPreParameterChangeNotification, info: SIGNAL from channel "Test.twoNodes.node2.g$o[0].channel", signal "POST_MODEL_CHANGE", class cPostParameterChangeNotification, info: DELETING: SIGNAL from module "Test.twoNodes", signal "PRE_MODEL_CHANGE", class cPreModuleDeleteNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPreModuleDeleteNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPreGateDisconnectNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPrePathCutNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPrePathCutNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostGateDisconnectNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostPathCutNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostPathCutNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPreGateDisconnectNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPrePathCutNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPrePathCutNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostGateDisconnectNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostPathCutNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostPathCutNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "PRE_MODEL_CHANGE", class cPreGateDeleteNotification, info: SIGNAL from module "Test.twoNodes.node1", signal "POST_MODEL_CHANGE", class cPostGateDeleteNotification, info: SIGNAL from module "Test.twoNodes", signal "POST_MODEL_CHANGE", class cPostModuleDeleteNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPreModuleDeleteNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "PRE_MODEL_CHANGE", class cPreGateDeleteNotification, info: SIGNAL from module "Test.twoNodes.node2", signal "POST_MODEL_CHANGE", class cPostGateDeleteNotification, info: SIGNAL from module "Test.twoNodes", signal "POST_MODEL_CHANGE", class cPostModuleDeleteNotification, info: SIGNAL from module "Test", signal "POST_MODEL_CHANGE", class cPostModuleDeleteNotification, info: DONE No more events, simulation completed -- at t=0s, event #1 Calling finish() at end of Run #0... FINISH on module "Test", signal "POST_MODEL_CHANGE" FINISH on module "Test", signal "PRE_MODEL_CHANGE" SIGNAL from module "Test", signal "PRE_MODEL_CHANGE", class cPreModuleDeleteNotification, info: UNSUBSCRIBED from module "Test", signal "POST_MODEL_CHANGE" UNSUBSCRIBED from module "Test", signal "PRE_MODEL_CHANGE" NOISYLISTENER DESTRUCTOR End.