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