%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 <omnetpp.h>

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.