Commit c7f5444d authored by Bhavesh Yadav's avatar Bhavesh Yadav

Missed changes from chord.c

parent 7ad0f169
...@@ -168,7 +168,7 @@ void initChordServer(sockaddr_t serverAddr) { ...@@ -168,7 +168,7 @@ void initChordServer(sockaddr_t serverAddr) {
pthread_t stabilizer; pthread_t stabilizer;
pthread_create(&stabilizer,NULL,periodicStabilize,NULL); pthread_create(&stabilizer,NULL,periodicStabilize,NULL);
pthread_detach(stabilizer); pthread_detach(stabilizer);
FILE *configFile = fopen(".chordConfig","a"); FILE *configFile = fopen(".chordConfig","a+");
chord.node.socketAddr = serverAddr; chord.node.socketAddr = serverAddr;
chord.node.nodeId = nodeToId(&chord.node.socketAddr); chord.node.nodeId = nodeToId(&chord.node.socketAddr);
int id = nodeToId(&serverAddr); int id = nodeToId(&serverAddr);
...@@ -225,26 +225,34 @@ void initChordStructure(struct sockaddr_in *joinNode,sockaddr_t socketAddrServer ...@@ -225,26 +225,34 @@ void initChordStructure(struct sockaddr_in *joinNode,sockaddr_t socketAddrServer
Node closestPreceedingNode(int id){ Node closestPreceedingNode(int id){
int m= MAXLOCATIONS; int m= MAXLOCATIONS;
Node* f=chord.fingerTable[0]; Node* f=chord.fingerTable[0];
Node maxNode;
for (int i = m-1; i >=0; i--) for (int i = m-1; i >=0; i--)
{ {
int nextId = chord.fingerTable[i]->nodeId; int nextId = chord.fingerTable[i]->nodeId;
if(maxNode.nodeId < nextId)
maxNode = *chord.fingerTable[i];
printf("nextid: %d\n",nextId); printf("nextid: %d\n",nextId);
if (nextId>chord.node.nodeId && nextId<=id) if (nextId>chord.node.nodeId && nextId<id)
{ {
return *chord.fingerTable[i]; return *chord.fingerTable[i];
} }
/// To handle edge case
}
/// To handle edge case
if(chord.node.nodeId<chord.predecessor.nodeId) if(chord.node.nodeId<chord.predecessor.nodeId)
return chord.node; return chord.node;
else if(chord.node.nodeId>chord.successor.nodeId) else if(chord.node.nodeId>chord.successor.nodeId)
return chord.successor; return chord.successor;
} else {
puts("returned max node");
return maxNode;
}
// strcpy(ip,f[0].ip); //???? // strcpy(ip,f[0].ip); //????
} }
Node findSuccessor(int id, bool fixFinger){ Node findSuccessor(int id, bool fixFinger){
printf("successor: %d, pred: %d",chord.successor.nodeId,chord.predecessor.nodeId); printf("successor: %d, pred: %d",chord.successor.nodeId,chord.predecessor.nodeId);
printFingerTable(); // printFingerTable();
if(chord.predecessor.nodeId == chord.node.nodeId) { if(chord.predecessor.nodeId == chord.node.nodeId) {
return chord.node; return chord.node;
}else if(id<=chord.node.nodeId && id > chord.predecessor.nodeId) }else if(id<=chord.node.nodeId && id > chord.predecessor.nodeId)
...@@ -253,8 +261,15 @@ Node findSuccessor(int id, bool fixFinger){ ...@@ -253,8 +261,15 @@ Node findSuccessor(int id, bool fixFinger){
{ {
return chord.successor; return chord.successor;
} }
else if(chord.node.nodeId<chord.predecessor.nodeId){
{ if(id>chord.predecessor.nodeId || id <=chord.node.nodeId)
return chord.node;
}
if(chord.node.nodeId>chord.successor.nodeId) {
if(id>chord.node.nodeId || id<=chord.successor.nodeId) {
return chord.successor;
}
}
Node preceedingNode = closestPreceedingNode(id); Node preceedingNode = closestPreceedingNode(id);
if(fixFinger){ if(fixFinger){
char *msg ,buffer[1000]; char *msg ,buffer[1000];
...@@ -266,9 +281,8 @@ Node findSuccessor(int id, bool fixFinger){ ...@@ -266,9 +281,8 @@ Node findSuccessor(int id, bool fixFinger){
sendUDPToNode(msg,preceedingNode,true,buffer); sendUDPToNode(msg,preceedingNode,true,buffer);
// //
} }
printf("Returning preceeding node : %d",preceedingNode.nodeId); printf("Returning forwarding node : %d\n",preceedingNode.nodeId);
return preceedingNode; return preceedingNode;
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment