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 }
/** * 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(); }
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 }