void MP1Node::updateMember(int id, short port, long heartbeat)
{
    vector<MemberListEntry>::iterator it = memberNode->memberList.begin();
    for (; it != memberNode->memberList.end(); ++it) {
        if (it->id == id && it->port ==port) {
            if (heartbeat > it->heartbeat) {
//#ifdef DEBUGLOG
//                log->LOG(&memberNode->addr, "\t\tUpdateMember new heartbeat[%li] timestamp[%li] old heartbeat[%li] timestamp[%li]",
//                         heartbeat, par->getcurrtime(), it->heartbeat, it->timestamp);
//#endif
                it->setheartbeat(heartbeat);
                it->settimestamp(par->getcurrtime());
            }
            return;
        }
    }

    MemberListEntry memberEntry(id, port, heartbeat, par->getcurrtime());
    memberNode->memberList.push_back(memberEntry);

#ifdef DEBUGLOG
    Address joinaddr;
    memcpy(&joinaddr.addr[0], &id, sizeof(int));
    memcpy(&joinaddr.addr[4], &port, sizeof(short));
    log->logNodeAdd(&memberNode->addr, &joinaddr);
#endif
}
Exemple #2
0
/**
 * FUNCTION NAME: initMemberListTable
 *
 * DESCRIPTION: Initialize the membership list
 */
void MP1Node::initMemberListTable(Member *memberNode) { //tao table
	memberNode->memberList.clear();
   	int id = *(int*)(&memberNode->addr.addr);
    	int port = *(short*)(&memberNode->addr.addr[4]);
   	MemberListEntry memberEntry(id, port, 0, par->getcurrtime());//id, port,heatbeat,time.
   	memberNode->memberList.push_back(memberEntry);
    	memberNode->myPos = memberNode->memberList.begin();
}
Exemple #3
0
void MP1Node::updateMember(int id, short port, long heartbeat)  {
		vector<MemberListEntry>::iterator it;
		for (it = memberNode->memberList.begin(); it != memberNode->memberList.end(); it++) {
			if (it->id == id && it->port ==port) { //kiem tra ip va port co trong table
				if (heartbeat > it->getheartbeat()) { //neu heartbeat nhan duoc lon hon heartbeat trong table thi cap nhat table
					it->setheartbeat(heartbeat);
					it->settimestamp(par->getcurrtime());
				} 
				return;
				}
		}
		 MemberListEntry memberEntry(id, port, heartbeat, par->getcurrtime());
   		 memberNode->memberList.push_back(memberEntry);

#ifdef DEBUGLOG
    Address joinaddr;
    memcpy(&joinaddr.addr[0], &id, sizeof(int));
    memcpy(&joinaddr.addr[4], &port, sizeof(short));
    log->logNodeAdd(&memberNode->addr, &joinaddr);
#endif
}