/** * Constructor of the Application class */ Application::Application(char *infile) { int i; par = new Params(); srand (time(NULL)); par->setparams(infile); log = new Log(par); en = new EmulNet(par); en1 = new EmulNet(par); mp1 = (MP1Node **) malloc(par->EN_GPSZ * sizeof(MP1Node *)); mp2 = (MP2Node **) malloc(par->EN_GPSZ * sizeof(MP2Node *)); /* * Init all nodes */ for( i = 0; i < par->EN_GPSZ; i++ ) { Member *memberNode = new Member; memberNode->inited = false; Address *addressOfMemberNode = new Address(); Address joinaddr; joinaddr = getjoinaddr(); addressOfMemberNode = (Address *) en->ENinit(addressOfMemberNode, par->PORTNUM); mp1[i] = new MP1Node(memberNode, par, en, log, addressOfMemberNode); mp2[i] = new MP2Node(memberNode, par, en1, log, addressOfMemberNode); log->LOG(&(mp1[i]->getMemberNode()->addr), "APP"); log->LOG(&(mp2[i]->getMemberNode()->addr), "APP MP2"); delete addressOfMemberNode; } }
/* All initialization routines for a member. Called by app.c. */ void nodestart(member *node, char *servaddrstr, short servport){ address joinaddr=getjoinaddr(); /* Self booting routines */ if(init_thisnode(node, &joinaddr) == -1){ #ifdef DEBUGLOG LOG(&node->addr, "init_thisnode failed. Exit."); #endif exit(1); } if(!introduceselftogroup(node, &joinaddr)){ finishup_thisnode(node); #ifdef DEBUGLOG LOG(&node->addr, "Unable to join self to group. Exiting."); #endif exit(1); } return; }