Commit b47089aa authored by Bhavesh Yadav's avatar Bhavesh Yadav

Added thread to stabilize

parent 5aad7393
......@@ -140,12 +140,12 @@ void setSuccessorAndPredecessor(Node allNodes[],int size) {
void *periodicStabilize(void *arg) {
while(1) {
stablize();
stabilize();
sleep(5);
}
}
void stablize() {
void stabilize() {
FILE *configFile = fopen(".chordConfig","r");
Node currNodes[100];
char ip[16];
......@@ -158,33 +158,38 @@ void stablize() {
fclose(configFile);
sortNodes(currNodes,i);
setSuccessorAndPredecessor(currNodes,i);
printf("successor: %d, pred: %d\n",chord.successor.nodeId,chord.predecessor.nodeId);
system("clear");
printf("node-id: %d,successor: %d, pred: %d\n",chord.node.nodeId,chord.successor.nodeId,chord.predecessor.nodeId);
fixFingers(currNodes,i);
printFingerTable();
}
void initChordServer(sockaddr_t serverAddr) {
pthread_t stabilizer;
pthread_create(&stabilizer,NULL,periodicStabilize,NULL);
pthread_detach(stabilizer);
FILE *configFile = fopen(".chordConfig","a");
chord.node.socketAddr = serverAddr;
chord.node.nodeId = nodeToId(&chord.node.socketAddr);
int id = nodeToId(&serverAddr);
fprintf(configFile,"%s %d %d\n",inet_ntoa(serverAddr.sin_addr),ntohs(serverAddr.sin_port),id);
fclose(configFile);
char ip[16];
int port;
configFile = fopen(".chordConfig","r");
Node currNodes[100];
int i = 0;
while(fscanf(configFile,"%s %d %d\n",ip,&port,&id)!=EOF){
createNodeStruct(&currNodes[i],ip,port,id);
i++;
}
fclose(configFile);
sortNodes(currNodes,i);
setSuccessorAndPredecessor(currNodes,i);
printf("successor: %d, pred: %d\n",chord.successor.nodeId,chord.predecessor.nodeId);
fixFingers(currNodes,i);
printFingerTable();
stabilize();
// char ip[16];
// int port;
// configFile = fopen(".chordConfig","r");
// Node currNodes[100];
// int i = 0;
// while(fscanf(configFile,"%s %d %d\n",ip,&port,&id)!=EOF){
// createNodeStruct(&currNodes[i],ip,port,id);
// i++;
// }
// fclose(configFile);
// sortNodes(currNodes,i);
// setSuccessorAndPredecessor(currNodes,i);
// printf("successor: %d, pred: %d\n",chord.successor.nodeId,chord.predecessor.nodeId);
// fixFingers(currNodes,i);
// printFingerTable();
}
void createNodeStruct(Node *givenNode,char ip[16],int port,int id) {
......
......@@ -32,3 +32,4 @@ Node findSuccessor(int id, bool fixFinger);
void sendUDPToNode(char* msg,Node node, bool recvResponse, char* buffer);
void initChordServer();
void createNodeStruct(Node *givenNode,char ip[16],int port,int id);
void stabilize();
\ No newline at end of file
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