/**
 * 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;
    }
}
Esempio n. 2
0
/* 
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;
}